// ==UserScript==
// @name           KOC Power Tools
// @namespace      mat
// @version        20121020bOz
// @include        *.kingdomsofcamelot.com/*main_src.php*
// @description    Enhancements and bug fixes for Kingdoms of Camelot
// ==/UserScript==

var Version = '20121020bOz';

var Title = 'KOC Power Tools';
var REPORT_Detail = true;
var DEBUG_BUTTON = true;
var DEBUG_TRACE = false;
var DEBUG_TRACE_DRAG = false;
var DEBUG_TRACE_AJAX = false;
var MAP_DELAY = 1500;
var DISABLE_POST_KNIGHT_SKILLS = false;
var DISABLE_POST_DEFENSES = false;
var ENABLE_TEST_TAB = false;
var SEND_ALERT_AS_WHISPER = false;
var TEST_WIDE = false;
var TEST_WIDE_CITIES = 7;
var ENABLE_ALERT_TO_CHAT = true;
var History=[];

if (typeof SOUND_FILES == 'undefined') var SOUND_FILES = new Object();
if (typeof SOUND_FILES.whisper == 'undefined'){
	SOUND_FILES.whisper = new Object();
	SOUND_FILES.whisper.MP3 = 'data:audio/mp3;base64,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';
	SOUND_FILES.whisper.OGG = 'data:audio/ogg;base64,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';
	SOUND_FILES.whisper.DEFAULT = '<span><object type="application/x-shockwave-flash" data="http://koc.god-like.org/power/swf/pdxminiplayer.swf" width="160" height="20"><param name="wmode" value="transparent" /><param name="movie" value="http://koc.god-like.org/power/swf/pdxminiplayer.swf" /><param name="flashvars" value="mp3=http://koc-power-tools.googlecode.com/svn/trunk/sounds/DoorBell.mp3&amp;autostart=1&amp;showtime=1&amp;volume=100" /></object></span>';
}
if (typeof SOUND_FILES.allianceattack == 'undefined'){
	SOUND_FILES.allianceattack = new Object();
	SOUND_FILES.allianceattack.MP3 = 'data:audio/mp3;base64,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DDjAkinqvrffaHptCYupuacokAazVds3epLqkh+Yl28+////////y/uv////////l21E1GqZ0gqAMaaNW8ObYO/mOFBNYbMcFLWs1RCMaaNSyNy+NQpM4RAQ1S2UMqXc6y+QaA0uOdj3w+6PNDigFGb5pSYygzjTbWVhV2tdl0y/r+w7elUNP9GbNyGn+f6XZwy/z/Q9Ls5TDLsuS/0PU2WWWf/zgsRxKlImaAPawAFlljjj+sqaVRqU0tLS481lTUuOqaVRqm7jWpqaXU2WMpjMal1ruNLS2ebq0tLjzWVNVxNyCgn4Q1UwWCoiGQ8NlQzIgiiEHIqE0aBWOAlmbl83PdPhKHEchSJhDBQLhgWJiEsdKFyh0ZEQhGg+MEYoHxMKREMh4bGCMgUXSTSTg2ZFIWEI0HxgRkArRu3/+MkSEsVOHSiNAJ//BQmmGBn//pgaqoMt/+hCaYYGf/+FA1VQY7/8FCaYYGt/9hA1VQYrVVVF//OCxIsnAY0wCEsSOaaaQNammmiqqocrVVVXTTSJTEFNRTMuOTdVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVTEFNRTMuOTdVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVX/84LEswAAA0gAAAAAVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVMQU1FMy45N1VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVf/zgsT/AAADSAAAAABVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUxBTUUzLjk3VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//OCxP8AAANIAAAAAFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVTEFNRTMuOTdVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVX/84LE/wAAA0gAAAAAVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVMQU1FMy45N1VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVf/zgsT/AAADSAAAAABVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUxBTUUzLjk3VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//OCxP8AAANIAAAAAFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUQUdzdWJtYXJpbmVfZGl2ZV9ob3JuAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/w==';
	SOUND_FILES.allianceattack.OGG = 'data:audio/ogg;base64,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';
	SOUND_FILES.allianceattack.DEFAULT = '<span><object type="application/x-shockwave-flash" data="http://koc.god-like.org/power/swf/pdxminiplayer.swf" width="160" height="20"><param name="wmode" value="transparent" /><param name="movie" value="http://koc.god-like.org/power/swf/pdxminiplayer.swf" /><param name="flashvars" value="mp3=http://koc-power-tools.googlecode.com/svn/trunk/sounds/AllianceAttack.mp3&amp;autostart=1&amp;showtime=1&amp;volume=100" /></object></span>';
}
if (typeof SOUND_FILES.alert == 'undefined'){
	SOUND_FILES.alert = new Object();
	SOUND_FILES.alert.OGG = 'data:audio/ogg;base64,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';
	SOUND_FILES.alert.DEFAULT = '<span><object type="application/x-shockwave-flash" data="http://koc.god-like.org/power/swf/pdxminiplayer.swf" width="160" height="20"><param name="wmode" value="transparent" /><param name="movie" value="http://koc.god-like.org/power/swf/pdxminiplayer.swf" /><param name="flashvars" value="mp3=http://sfx.god-like.info/alert.mp3&amp;autostart=1&amp;showtime=1&amp;volume=100" /></object></span>';
}
  
var URL_CASTLE_BUT = "";
var URL_CASTLE_BUT_SEL = "";
var URL_PROVINCE_MAP = "%2F%2F%2F%2Ff%2F%2F%2Fv%2F8%2Ff3%2F%2Ff39%2Ff37%2F%2F%2Fpe%2F39%2F%2F%2FnO%2F37%2F%2F%2FlPf%2FnPf%2FlPHv9%2B%2Fv7%2F%2F3lO%2Fv5ubv7%2Ff3lPf3jO%2Fm7%2B%2F3jO%2F0lPfvlObm7%2Bb3jObm5u%2FvjN7m5ubvlObvjN7e5t3whN7e3ubmjObmhNbe1tbb3t7mjN7mhNbmhNbW1t7ehM7W1tTfe9TchM7O1s7OztbWe8XOzsXOxc7We8XWesXFzsXFxc7Oe73FxcXOe8XOc73Oc7XFtb69xdHYAL29vbW9vb3Fc7bGa7XFc7W1vbW1tbXSALW9a6rCY629a6yurq3KALXFAJjCWq21Y6uza6W1Y7W9AJy1Y6Okpa29AJ%2BtY621CJytWq21AJq9AKWwG5ucnJylWpSlWo2oUoylWpytAJSUlHyrSoyUlI%2BcWoycUoyUc4SeUoStAIyMlIyMjIyUUoSMjI2gAYSUUoSUSoSEjHuUSoSEhICEe3OhAHuEhHuMSoSUAHKOQnOMSmKYNHuUAHl7fHOEQmuSAGuEQnOMAHJzc3OEAGt7Omh7Qnt8AGN7Ompralp7Omt7AGNzOlpzOltzMVJ3MmN3AF9rOmFiY2trAEp6AFJrMUpsMSx%2BG1JrGVlbWmdjACh%2FAkprCEpjMUprAEpjKUJjKUJdQkpjCFBRU0hjAEJbOkJjCEJaKUdSRTpaOkJaGTpaKUJSOjpaIUpKSjpSOkJKSjFfBUJKQgB3ADpSITFSMR9eGDFSIQhrCAhrAEBBQzFQGTFSCClSGQBrADFSADFKIRlbBAhjAClKISlKGTg8OQBjAAhdCClKCCBLGAhaAEI6AClCGQBaABtKCCFCIQhSCCFCGSlBBwhSACFCEBlCISFCCCFCAC8xMgBSABlCEAhKCCA5GSE6EANKABk6EAhCCCkxABE7CBA6ECcpKQBCCAFAAAg6CBIwEAA6CBAxCCEhKQgxCB4hIQAxCAIxAAgpCAgpABkZIQApCBkZGQApABAZGQAhCAAhABAQGRAQEAAZAAgQEAgIEAgICAAICAAACAAAACwAAAAAxgLEAgAI%2FgABCBxIsKDBgwBCHAqlhgDChxAhFglEkY8DACkWhnEYsSNBG6xeCCSwJdShFCNLnvTIUuAhOQOnUAw0x%2BELSKG2tOyoQU4oSD9GjjFZQijRnRGLXArF5iKALTPlOLSBcwrSg0qWWhVINdRWAF2%2FXjXIgU%2BoQBoEpph5SKQDn2jHQpwSqiiAH5cuKRmIV6%2FchxouqRH4YmYglA7M8onw16AaiofCCFR6KejkvJb%2FEngc6JBOAmwg6wSQtXLjggTC%2FBQJQEOgUHKcuobt9DRXnBsBEJADeStdSDZsC1RyyLBIhQw5Im%2FYmLhhlBMrXswYKrfwgQ6GyWPFj8%2F1iJf4%2Fq2DJ06DA2vwuMO8%2FsIaP8th%2BLlaVx5A%2FPn1hRMI5C%2FUQFfiyWONAxqIkw4u%2FEhmGwGs6BOKOPj0AIAc%2FLACzzAXUciKPBgKpwQ%2F1nAHiUDD7LMOhwSEQB%2BCYl314TAsYkQeLvvslcKM%2FOxlW3b0hHIPLg085Y88J%2B51iD6s3MMKR8LdiI9IL9BjzTD4BPXCPVNW%2BR0Ah%2FwzIgBsDHliUJfgwwo%2Bl1ynATz4nJjmD%2FgMYw0%2BwcEpJ52NaSBPm%2FSMqCefIxahj5z0sGYbJA6us44GDNLDyj6H6OaKo5BeZ4OUrvwzWAr40LMOPYEAMAU%2FuIizDkq28eHpOvi8R4B2%2F9x5l9123TUWyKqtBhfeeOWdlx4%2F631XRD%2BSsbJObVsSRIA1oTjQwEVK9KNTqcj%2BFQY9ewa17DCk9WPVlN2OdloIVKIpkAPpQNLAs0%2F1s9eUTP5VQjqh2tAdAeLg0m4R%2BOq7hbvCHSJOCACEIk8Eegay7kVquJpvYyURoAE9aVJogwPrsDIhPxdnLFwIXgEQCD8oHbJOCM9KLE%2BadXB8HYP6yCNSIPikoGeaNNu88ndK4KNPpABcUl7KnEZ6SM3C2aDPFgQ4cBEk9GhQNABQS40P0HL1sM8Uz16k9RRNX3SJPFLrE6ptL5gNViAh2AvT2A64HTTZwo2dVh1WFcFPEf4pA8BKOgTIvaDTL6wT6bDFrkMA4n6nU%2B1OYb8AT6jLNstutNOK83hjDQcViD6GJjtQCBxewjYAfLh8NKqnvURhUKSnuQI%2BaO38Au1Js1JEOv4BMDsul%2FCR1upzp7WjQ0TwM0YIV4PFjxrMRyr4aQ0wBkCpgZt5SWxB00OwsZvvpAEc9%2Bhk9%2FXiEHA%2Btd%2F1AONF80EC3F3AhnudGutA8mTjF1ljDYOOA4D%2F4vUXDaQrf7oZhjjkJ5JoSeZfOjrNFvYRikvkRk66yder%2FtevxoSBghYMgH0cZEHdgAtjGrPNFp6nhtxAcGMveKHFbNOAfCmBD8GZEJouoRMHPOxmW%2F4SWFrY8B6R1axzIgPdoTSXkNKdrmXBId53Uhec1ElIdASBE7Pi5IDPzYwfodOMfYo4tRJczYyR4tSXTuMQjPVOCfsYRijwgQsCQOIeRdEf62wTAmss6gX78A4g%2BfCCWsVAbd%2BRQz9gskJchIKCBAjFogpGt8bI4R%2FDSAv4%2FLYoY2kSHsbj4zqWBgAfruNBhWKc3gaDNnpMIQz7U6BDqCWnICkwSLa5xDBU5Kd18G48KZiCt0QlLeF8jhUICgS%2BuLWt8zBzgH85EjJrJU0E8aGDNeSWbdRgIlzQo44NKwIA1NCPH4yBH0AY595sUyApzWkvZQrFMJ7nAHj4RwMeY%2F8PPhTEh31UEYxURJ3LGqO00WhxjhjyYhLDeJqABhSL2LnYOP1RBD4oMRD7YKi1yIiPERWNeR7t6HcwcMpzSZQP%2FejB0fKID7vwcU7iVFqoYhBIQNYLkcJR5CXaaAOHHAKMlwAlJUMpFw38QBxL2iT4PMlJ6y1oLVUKwAsIprRDAEF5AFglDXGBi55U6VXpA4ACsyMOW4b1NFPAhxJCAI9LOIAAU6VfHaJlFWGKK0%2BsmU8fn4khcG2LgDsJgUgIgItjCVY3hQ3Bw3yozdOowR%2BhEqYS4iNOcv6AsuoU52kMeLIGgOuwnrWGijS2phQas5IOBSMUUefP1k2ylBJ97A3%2BL6rE74ShH%2BmUIkRLSbCs%2BmMKDQsO1HornPgEBYiArIMDbBfIkZaUtwKZgj9mKxJJErWA2kknANBIvzBooHk%2FeN79%2BLFGB3xAIGko59EIxj65HJZq%2BNAAJOiGwfmmRU6AvYoDYnCRQl5TA0G6WSFhIswWjaWQ9ICHPOhBjx9Isn%2Fc2iS4bBOKfpyIHmhKkUOiF17J3FazmzWeHrGHQvQ1LZ9FFbH3NGC8S9CjBBisZ%2B%2FQ6g%2FJFDIM0dpLP4MJsH5qFCnLsoZAHkQg4xmrj%2FoKwT3WyEZmDeScQVmvcbmEtL%2F4ME3n6m0R%2FLGF%2BEjojsRNGj%2FQAs3dPmUfYXDAT1%2F%2B0IPuFGgY%2BZXLlK%2BXjhCQU5y4qPOdnds7NehjCg4oUwiiBT0UNyaS%2FDiEDX6QgiBrIKD%2Be%2FRAT1MEfIijCD%2F4AQH4gI8iOGBDGvjXFlKws7%2B42AZ9TN9tpxClEa261WI%2BRE9%2BSzpIOGBUasBYV%2FXITjXIAQ5zPEQIKFQEG%2BCO2MY%2B22mUIAc58IFDSjD2IRxw2y3oKRQaMFiY%2FyLJqQ7wcz3QG0zALe7G%2FC0Fih1GA0KRDnSLA85Hs8GHWHmaEjhKA3dOgT4goQHs6Zvf7W2dPoqg2CXhQrQp8JiLeXzXxnCK3vYis5AjroEyyyVtCnqKPtK8ZnsJD15bsmPM8GH%2FYNH1Wx%2Bj9I76Rh5B4ajhH5Ypgjzk4SCHyJzmoYjzWK4tEHK1CR8wWXfM5JGZxoRXH%2Frgxz8ilVZ57AMSDmn603W%2BE1z0o1X9iFoKIMQqyTgAF51aRw7lYoN04GPBVuk3Pu6xDpGone0%2FBvIh9gEPCl4Eo6xixUVg6XRl368fKOkjPiwd%2BDkRfksO6JNuICEeB2UoZvoI1ml%2BMPOZi3PrgxctRiCED83%2F5ebygEdQQC%2F6zQ8%2Bk%2FeD%2FE6TuCcFfW5PDf9LCuYU%2BqBM4R4zFztYPkXH8F2lCP%2BIoMj3ZJXhk3zZwR%2FIyVOum0uwXHQEUIIaxm7mUgI3M9FXQwySVQIl%2FoTyBWMA9EDAL%2F7vLG7sGgDu2G89hrgjZdBKiL8SWBMDNSiBSfW%2F%2F3WAIH8l8Ks1W5AG6%2FdKe%2BReXcY6DnCA2KGAwmJ%2FTPIDalB%2BANADagBi35ECSiAbXUZcoRYG27YgRcAai%2BOAfFGBW5ICYRAGrPMBYWBto9OC1zUWKKiCAzGDrBMCMLglFKh%2Fk6EGRVcEPrglHcg6L9CCxIWCW%2BB7V6EB3qcs0jd22Ud97tWE2HF9AxGF1ZeFWriFXNiFXviFYBiGYjiGZFiGZniGaJiGariGbNiGbviGcBiHcjiHdIhFXQSGKSB5XKgG7rdbwvOFd%2FiFU9Bye9iHEPWHXvgC%2F%2FTWhfEHhnz4hY8GhoMGhjYghVsYCEoIUZiohRpgWl1oA1jmhUABhqwQg1nYiY6YcV04il%2FICh%2BYhUXAZHu4iFzIil0YAp7IhT8gi1uoBrSohQySiVhUigsyBZERPqj4hVQBhrbYhdgGiLnYi6rIhYdQdFwYCq9YfT%2BANV2YgmBYjV8IMmC4jWDojV4YjK1oikiROtagD6tnEMnohcv4hc14jepoZp%2BWit9ojVuIjV9Ijl9ojl4Ijl4ojv%2FIjVwokFyIjl5IjHkiDzk3MpbYGtGohfMoivyohc%2Fohfn4hS20j2Doj14IkF4YBmogAAIwkBlZfQY5kgi5hQq5hQzZhf8O%2BRfhBROYcxAdmYi8qIWKRor3uFs72Y3TuIWHcEVeuJFdSJJE%2BY1IyYXZBoYqVY5FqYWsgEs0GZQeoQQ1llX1UwJFEJZhOQXDIANmeZZomZZquZZsuZZb8AltGZdyOZcywEN0eZd4KQOPwAN52ZdtyQOt4JeCqZaBwAeDeZhmSQhbgJiHeQpFwJiCGQaXAJmCaQZmQJl%2BaUGYmZdKcAqbmZeS%2BZl4SRGieZetwJelKZewoJUdwZWSUW5FcAiyOZvdoA62eZu4mZu6uZu8uZvecAvu0JvCOZzD6Q7A4A3EmZzKiZtMYAzBuZzQ2ZvlwAvRWZ276Q7I4AzPaZ3cGQ%2F%2FYAAK8cCd4qkOvFAO48md2UAM23meyxkPgAAI4cme0Gmc2SCf0Tmd9gmd8UAKbRCf%2BUmc7uAM2vmfykmdBJqczSCMEXGT3VKVABAM6oAOEjqhFFqhFnqhGGqh3mALGdqhHvqh6AAM2QCiJEqiERoFxhChJbqiGVoOt8CiMIqhxeAMMVqjE%2BqdmuAONmqjt1AOO1qj2QAMPxqj7gmfQwqjInqkLOqiSrqi7qAJYBAPTVqixVAMU1qiPXqlH6oOCTouELlpk0YQCdAMKqqlHbqhZvqhSZqmHYqiZcqmFcqkcCqjNDqnFuoOYJCjdmqhWbqnFBqkfkqhRSqlgSqha1qo%2F3JaqE8KBjpaqOggoI4qoX0aqFyqoBExMu34jgUxpm%2Fqp2gaqYdaqG7qqIlaqDMaqXiqp446qYEKqI46qKA6oqT6oo66qI1aqJAaqay6p5W6IFsACbmGEJwaqZ%2FqqKEaqKOKqLTqqKdaq3l6q4G6q3vqqoUKq8Yqq8qKqlAKrX6aq6vqo4Xaq1k4rI5arIV6rH6arIFaqoHarIr6rLoKroVKrYFqreeKreu6rIFqq5HqrYUqrXMqrtVHroVqroGKrnuqrn7Krn7qrvsKr98aqfTqp%2FZ6sPi6sPrqp%2FzqqP4arfLqpwJrZgQbqAbrpwhrpwq7pwy7pw6rsRD7rx%2Frp%2F8Tu6cVa7IXq7IZu6cbi6t1GrHh2qXjSqbEyqGxGqnokLJ2urJ22rI6%2B7IeK7FC%2BqrvSaj3GqlKC6c7G6gd66cAC6chu1sj66lEe61Gi7RzerVwyrR2mqrcuqddC6cza6c1u6cnC6dom6ZZ2609C7OO%2BrUQFbZ7WrJ0e7MJm6KzarRqO6dsG69QG6lza6d1y6Z3a6Z5u6db67Yxa6d%2Bi0WAa6eCC7mEi7KGm62RmrhY67Rcm7l2Grdz%2BrhzGrlpOrlaWrl2erl2%2BrZpurmi07lz%2BrmvG7pzarZ2m7Msu7cuq6p866isC6euC6ewa6aye6W0O6e2O6e4a6a6myy8C6f%2Fvuu8wAunwiu5xLu0xtu0yPu0yhu11Tq1RXu4tbqt%2FVq%2BmNu3QDuwQluuY1u1kRq%2BsTu%2Bc2q6bLq4Pjuv6luv7Eu27quo8Mux8nu7quu19Suy91uw%2BWuxZTu6%2BYq4DXy655u6jSu1RorApKvAjBq%2FRnu9Wpq9W7K9bNq9bPq8Zsq%2F0Ou%2FabvBAYy685u%2BjnvA%2BjvC%2B7rAPHvCD8ymKvwdLJymLpymMKylMqyl0XulAIy3OOzAH7y%2BIdzDGfy%2BJczAQky%2FlnoaR2ymSWymS3ylTXylTzylUUy5U2y9Q8ymy8umzfvC39u%2F2rrFQcy44RoMCaCFYaylY6ylZTylZzyl%2F2ncpGs8u20MpyispXGcpnOsxHU8w3fctrVrw2zayFOqDnzsxxNMshVssxfcqUlLw2yayNK7yJn8xmn6yGYayWQ8yU5sypQLxFqLyWmqyU3KyV%2FcGH98pYF8pYPcpIXcpIespKg8pQKcvAS8w1dswQn8w3h8y138s738F788pcE8pcOspMWspMd8pMncpMuMvs0MwlQLzT6ssbast9VMqREMtp8stkbbzUf6zUcazkM6zkpazh6sw%2Bjcvuuss%2B1subhsprqspEV8HdncpNvcpPY8pPg8pPr8o%2Fx8pP6cw%2BdsxeksytHMztPsznoMz9csFw2tpA%2BtpBH9oxP9oxW9o%2F8XPaQZTcUAzdECncUkbMnUe9BamtBHutDCcdJHmtJHutI72tI7%2BtI2GtM%2FOtNuXMUG%2FMwePdBrW9CX%2FM4gG89%2FO8%2BBG8qDO8of3bA8rcyqnMusbKaurKWwLMiyjMa0PLtWvdNYzatazblc7bleDbpgTdXki6pljdBn7cgFTLE8rM44Lc06DafVy8iBvcnBUNJjIdRDStRDatQ2itQ2qtQ1ytQ76tSMDdWELdVfHdZVHdIGPdeaW9e7e9e9m9e%2Fu9eH3a5jTc5%2F3dONPaVpfaVrLcxtbchvLb1xrdiz3aQ%2BPaRAbRuS%2FaOU%2FaOWXaOYXaOaHaOcbaOevcqgTbOFPdX%2FsU3Qpn3VI53VkH0Vyb2jy72jzR2jzx2j0Q2j012j1W3W1y232T3afI21wc2mi23d1uzJpIzX9dzbhIzBGKvBft3BGt2qg43doq3XpK24952m%2BQ3f%2Bx20%2Fd3a%2Fw3bA166w43RtX2lxT2kuT2lu83NAA7Ov63MD26mEQ7YXszfQ3vh%2ByvgOEvgzmrgNL3RUd3R9L3dpZ3Y%2BL3hR%2FrhO8rJfUzhL37TyCrjpUzj72rjT13TOY7kM67FPg7hQD6kQm6jxw3GrM29ru29GD7lzHrlnd3hU5rlNhriTTriEF3i%2BXzi5JziWrritt3iRo6%2FMO6o6Q2j682i7R2j783iUB7a%2FzrO4PUdwHJ%2BpXTu4bet0J0MZAQQ6QTBKA8x3jZa3jZ63jC650sK54hM5tRt5sTd6Eqq5krK5irt5hTt6Rid6FO66GdO6sat2g8BY%2F4jDlYBMgJigWLa5S385XQc5kuu4QVe5YKO44Qu5cOe0yb83XR9zR%2FiSK4AT%2FjABtaQDqZo6TWK6TWq6SzK6Sva5yv65zAa6HU%2B6Ape6K%2Fd4Pbd3XLt7Kl9zXJAD40mEEAkWQdBAL6OxMAuycJ%2BtqwuzqDu3qKupGgOpAku3wu%2B7oeOt67epLA%2B6nbeEmUiDuJwTWnjHeE1GGHjNAQCoeUQ8iI%2F8iRf8iZ%2F8iSPDtnAoSjf8v8u7%2FLoYAsj%2BvI0X%2FMi35zqYPM67%2FI9uvM%2BX%2FLoUKXo8PNEH%2FLqkKc5X%2FREfwveoPQ%2Fr%2FIs7%2FQ7zw7vyQ5Sv%2FMxP%2FNXb%2FO%2FufU6rw5QmvRe%2F%2FJBb6VjX%2FM9f%2FYuv%2BW6IU9hAAnE4l%2FOMweiwgp2f%2Fe2wAu3sPd83%2Fd%2B%2F%2FeAH%2Fh%2FHwuxIPiGf%2FiIfwuEn%2FiMz%2Fh6bwSZoPeNP%2FmCzwuFT%2FmYD%2FiLn%2Fmcv%2Fe8kAWSIPmdn%2FmbP%2FqYX%2FqmP%2Fm8QAd0IPqp3%2Fio%2F%2FqJH%2Fuyf%2Fi8IAlZ4Pq1f%2Fi0v%2FuCHwu67%2FuAzwuVUOSQU0oZUwP6oPH1E%2BnOLzEQKrH9HstGi%2FPsnrb%2BVtq3SK%2Br3hDfc0r1gMAOyt67Af%2BjYA8GFY79kQoOBw%2BjvLwTDRBtGeSKikdXB6HtMcrtMertKwruJQoQ5W6hI1jQ4EGECRUmLOZs4UOIEd2B0eQu4kWMBW%2BVy9gRYjZgHkUmjAcIULyRKQsCy6ZSpUCXKd1pAmMxpkhnDm%2BK3Lizo7pmDgAMJVrUKAAH4tL9UMNPDQBc64qEkhfiKIAEzdT57OjNFteOLMFmjGJs61iIMNFGbLgW4sSKbh%2F2lKsQZF2FJU%2FiTSiW70G1fwvOrCnYYE7DBukaBir06mMARcThuwepAYAa1vTJC%2FM469nEXhOvbDkaXVnQggMnbjv%2BGq7NxIsN3x2tF%2BVov4lXCyYM2zBi07L%2FNoYM2YGNFEWPW%2FWs1bRo07kTox69W3DrxK%2BDcxxNO7Ht6KV1D3RN07dg4KOF8yVe3P17op%2Bffw1v%2BrTZ6uRHYzesXT33xLwzDDzcxDPMOr56My292AAUrD34ImwuNcGgK9A%2B6sazjz%2FeKDrvr%2FX4ElAwAhOTTjX9%2BjNvQZ3%2BGw1CCWOMz7nRLDTRQMMyPDBFwzj8y78GTRvxrxINO%2FEvBPFScDQGDQuxLhhljFG%2BGum70DQdUdywxf483E7IkGoz6bYbTUuyriUTa1KwJ%2BWKUsoIqQzNyjKxxE9D03xM0EsXuwvzuzH%2F68vPtDR%2F49JJB4cLCk4p5TTMRiNxFCxLl9RxJx5M4%2FmQoDPr0vOgS%2BM5K1QKMwISUTBNKxIjUlM6kq9O3SoUvUPZTJS9RRmdksY57XuVL0plEiaPKq64goxN1Ck1Vrc%2BLUgdO6qoohR3uumiWGFKvejUtTKFrc2EtF2oVYOGfNatVSPqpgxsxYXo17qYRWvWkdTJVFN3CVozIXJvEq7fsd7UtThHb1L2YIQRRscbYtzJN9yY4D1I4ZuCFckdQ0RAYGOOg1jlPHnRcpYgdWYwwIA%2F4nlGAgMQkOVhhbgdqxs3yCBjkbPANcjSbjJSxxCbJ0nNXHTcCSecbgP1uZsN%2Flr2BOa%2BJIWVxx9XVMnSWuKwmYw%2BglF2oX13ppmMM7CBOiLZfra5lLM9EnjgCblyp48cgrD77rtzICOcJGgIIluMlK0lYqkRcmeTHHK4YieLO3LnD44RkCDyE55JLeSxRkZHnRw2JkTlDRBQoJa2DZJZ7k02NkCEbrbSmWSagzCH1SNOLoNMdIZU1pAZAB8r3YfU6UZjBNgeyS%2Bo81X%2BLOu%2BXqh0fq2uFx03Jo%2Fcgi7CETfsZ6WxoOVUoFco7RxOTnmtt%2BE%2BqmCX4rmi5cgjNyCHcDzY2JNNEVInmCNmIHxbQ5xsBuJDSOMClwrriaBrmzgCx64AG3WwgxfuoGBq%2Fi7lMAo6zF6islQGSYYpCGIKNBS8hk4ueMFndQ4Bn3tG6EZHwNP5xB1ViNwiLPI6ddSiBQZogamcsDE34G5EwmugBHwHFuA9b3gbM97OPPisJwLDGyhpnahMV0EK9sxhOxNVFVNjL%2BF1g4KBuVQ4uhGOCnJReJYiYNGkNxIacsx6CDBAFfLHPZJhw34ICN9OyGc%2B3HElfeorCvtUEo8uiE4BCuCYAhjAyCCEo2kIwF9E1LGJ7%2FnPJRIbjCE2NsCK3UkmUNiYCGoxDzYGoWUt6FnRuoEIMTzBDZvQHkHCsYg%2FEEIYf4DCH7CxiT%2F48hmEgEIZNrG5ZwRzESTzRDCb%2FohLPdDCYZuwwxN6SYnNbU6FLHQh6UYSQ4O1MHJBcB2ALAVC0MxjEp%2Bk4BU1tUWCuOOHCAgiydxBjmWksWjC2JgFnmFFJCotcEssngUXkYQncAFpm%2FPEE56QPXQQgxZu0IEJgtAFWdhEHWdwaCkmkYQT5MANrSPZM8gQhBMEIQ7P0KgwTnqCExwhDtjgRTw3UYUZnKAFUEBELZFJ0Zi6wXLffGNH4pEHjt1gEbX4wwk4RgkIXvAa1wAVFjGlx42lQlP4mhgFuQpFDaqDF%2B2A58%2B60IWnQRGdlcoVIQnGq3DWQq6TsF4f5FoLYZgDEXowhOU26DAOAnQei%2Fgkpuxp%2F5OvHrZolloGOaK6FX1i7JNtNIgBLSlOes5jMKWYpTBItokWxG8GtXCYMBjQshmobhNJaBkZRAA%2FBNhRGAowgBGVpUoDkDOHdGQALcyRhPgh4Aja45znQCc6b16MT2iJRx82xkjJka4nypJFH6T1B09sTh2pSCQCTGCItG5lE8SapU%2FlCUSUqAMbk%2FBCE8qwiFw4LBh5YIDk%2BrAIswV0L0sjXhPj6QmOUQsd8ajCyZJAQT3sUY5u2ErJWqYC2nJMB0hzxyqcGjkTpMJhviAebFlQid0tgI6whUKDa6GC%2BKkguY4r6kAvPIRwiGoetbDAxrpgE3c8YxFkqEI0tyi8Rf4YYhPPsAOypLHHVKTCDV1YBElJFo5JxKELhhCGRmthCEPU4pZN%2BMIkfOqJRSzCd%2B4QBiKuZYhg5O8ig3QrVuBqMGXFIxjWmwQqlRWOOHihDFUWxlkJgY0%2BJEFvGf3ZEDbmgS64QXvhIAROZ8CFPEjjLOoIhyGgMIM9K6IJXRDa5roR6BlUgRC1lCwCQBkTy0JEHbmw3iZ808EGI5BjClYBn2tMOXTMs5S35qM7grAxQ6hsjx6QRjwIsbEdcKPAhw7dxmxY3BUe94XfXC5aUouAMlz7dhuhdBUmd7KNQSHGUICtAY7gsFoYOnIt0HDR5hnEHIaWjoc2xDz6ANusUv%2BWJAJdM0H9SzIdbOx2wrvwJOIhawRsIAgKDja0E34EeSPAhuFQoQeOAINPxjiOOciDa%2BmIhHhgQ2PY6wMp6TgJo11bBUe48Ax8aqoWb4uwTISNO%2FLQ2Qb%2FgXgbk0AXtFsLOopA3h4QhsYUcO2NtUDAOUR6wvuwFQKfLAgB59hwlVU%2BlN0mDwpGgAXi0EY2u9WQBquF9WwIu0l64uB0bAHWN7aBUsyDtRwzwAbMqELYtsCv3fi16jzwWgMMXBjyBncOLFfqU7sk1Q85XD%2BPqL%2B%2BV0AP3VhEjesYD2HcWgKE6EMe5M7zRYRDFnu0gz0gF1t7pI5jm%2Fg8AvRwDShYQAL%2BhjhaA2Mrqm1Ke8WOq7bcAIwABtSiDBs7QTd4UY7HtUwCiWOkAbpgD3LT%2FQjxkEbEeW1KS707Ht1AseQqYD27%2FwHffNQ3QpKoEOH1l0LGTjoa14mAFqARuKau8jPmH39oe0AW83iGCTZW%2BpkzJXtABxrYGJTru6%2Bzh1Q4gjNoBHdIBeILH3twgypwg1qIh5lTgWewh2e4NlfzCHq5iOYiPif7oC1yh2PjOV6rAsGZIzq6gm5QMAVoNvgzm26QNwagwTy4lDjqpzkiBIehupR5HI6xAF5DuXppqza7irGLiRwyO40iKLWDQI5pAaQLgnmoAhHjuR56H8mZgRloPjv%2FEJW5g7%2BmKwP%2BG7ocCJ06uhRPMrXyuw%2FKKjULeLydKbuNQQRiUId5SEEPwIZnuDU0xKD5mz57mScumIfMQ4ATQIfu2pg4QAeN2QBacIhuWAV0eIZN6LsqwD3jEqdpU664YK4r2JggcAdZMDtiQD6TKz17IAQLwLQcGj5GnAStKkXJibRJ2KMhOEQgUkARkAAVoAVbGD3JWYVkmpzNm4QS3InzCxd%2FoxB1EIZmKwV7iKMu4L9mWwSUcAdfsB5qUSEo0Cx3sL08uEZTrIVSkAVcPAN7sD1GTII%2F8IV22MNFTLoq6Ct7sJc4cgJZKIVaiCMyCCSJiDmJoEVyeh5q%2FKRU%2F3gGXEQAg8NDBFCBReACT4jBpEuFbiAE6zlHN9gYFdDIPmCk4iMwjiGDZ6gEFgg3URHC7SOeKhAGYWAtA9AkkQg7QmrCSpHIs%2FM04plCjjmDzemuHBAe54I%2FmVQHN5iBDViEebCH7kqCGbMeO7CUPtjCMrAHpGJEYZgHY5SAU3rDxFOJxXseifxAg0Ajh6HCDaCpzVnE0QlEYMOx%2BauneOACG%2FPEBUiFgPOAGjsC1TuCEnrALsgBXrs9aOMm5IKh3tsJ9SIeQrCHeOi7IDg%2BdzC5DTiCPEiFKrMIdWKnaiGeOEClz4yuedA%2BdMCGYPAFb6iERSCeRbAHYZgcfyLIm%2F94Rv2JRsMxuTJAB6eSAK2iwjo8C%2B7bmJRRoTEsGiHYmHPsu%2BBCgCCIB0yKHwnYARBTBzIIrg0gg24wyec0ACiwTcYzyLeYv1Mcl9MTAWHQFG7YgY1xgnjAQwlgPYfBKgSoN3t5go05N6qrJ3TwQHScyM0hhjNgSXUQQnv4PdahoGCogjw4piR0jCVkwjfziSd0tij8ybVLOEmLhzcUAWwYrMmCrBzrhlTog2tLAnughFIiLnSQt6ycvyt4hlqwv43pA3sQyzgsS%2FSbzRslE3eYhBbogk5Qh1U4NLdUB1Cs0VszBLpErwHDxS7QlI%2BMLfupAlI6gVacKjv4Nvjrvk7%2FTEzdY8xRBItSk4A8MISD4rlKQL6Z4xgGaAFFs5SZ6yElrbFpIzgDtAftU5ZJqIIWYBmOMbhv7Do7dEZ%2BsyTdBJX3m4H3K8oKY6Th9LTu%2BxwVclLlZE576DsPUAGYaoEWUIESc4da4IKd%2ByTtmoQhoEE6coMA3QBPPQEVUAETKAM1ixnyfIh4sAOQbMY4s5c42JgkuI1r0IPJwkN%2FajD7XAXIOsoJuzARmNUW2MYABSVi8AIDRdCtVIFaspd2itAJjRu0uFCJy9D72dA%2FVJZVUMb1nDmbRIdFQKl5E1Z7CFZGJLV3e4e%2BW6RFUh0uyNHJCiV9O9CNoQExOpjaWR3R%2F%2BO5Vagpd%2FAEdpVLBECEJ6UnlHCfvDTSydkARsIynpMcWbgGWqixBbBAdaDFMM29JSXTW00Jgn3OjWkCdigaQug%2B6RuwOkWmbmowdOg%2BSuBT9OqGBjqZ5bs1QqXNQ73NRFU1glqFecigNAqH0JIAjEOAPnAYgiIEVIoHT9hCDbtUi3CH5USAc8TFJKA0dEiFGkWaZxCGTsAGT4gDFSqeTFTHZ5iEMpC3GcBYBCixo5GrM7qYXF2IeDg92xqMMgiCPlhPez0wgijWY0VaZUUyyHrDZ4VZbAtQJ7CIa81W47SHAp3Ibn0nl1XCcJ2ROAwXnjRXSkJXs1k1pMVAVN0cWv9EAIujOhWt0hOopXjQT3pSB3mTgA0YXg%2Fwy6zUUYF1CRTsGGEIB2yo3U4kKCSwhWrpuwFaRLAclbq8WCm9DaQLvlqor4JFB8i13W6QTNtL2U%2FcWWorUwtFOJg9AbO5FGHgrByYI9bL2TvdGEpIr4VEgE0AWnrK0ZYRAT0AsWs7WkNN3YPAzYkhqAedBAmW4FIYMHt9O8Bxh%2Fk7gVLohlpQIRjQHrDNVLK1h5mzALXrhhmwABXoqxOYnEmwB3ugsY1hKtkzgQ20h6OcAXeYuQ3Yv2dQAQtogT9oWcMZXPSTSHgrmmewnzqq1xFFB24Qg43JAVKV3M2xzw%2BMhyqVne7%2Fi4NU8ARP2IRS4EzvHMiIwta%2BbcnPfT%2FWUZZnKANC6ISFchvTPV03Y%2BCJWV3Y0VAqTNcLrUPZhcMcqzEJ%2BIPz5VUEUNH32wCWqhb%2Fy9z5K4NweAZsqIVgeAYxQl5UEyWXNbmuawEFE4HDu2AWkFcDxDxDTi4NhlK%2BnVIL5hj%2FCYcLQ4A4iIdrqIQH2M9F8F3EVFn2FUUjBsHu8oAyOOZj7sEmg4IcEAFPyIcZIx5EMOGk%2B5priyRRwUUQjYd3C1AyaIdlCIY9ikhlVAZ1mB39Ek%2F0I6jnHCByFS6NQjgJ8ADrsQBXgzZMFVvmRIlrk4AgCF7Smj8LCAKQQlUaZkS7%2F2m2MQyHa1O47tuA3dsWJEY%2FeIyDnhEGdZO40ty8S1mFDBC4qYQ%2Fc5hcYeVDbIBRe5i%2FcbQHvhuCPcvCjUHjzl3jl%2F2DeVhXYJuHeRC%2FhGvGwLnj09XJq%2BFjnzzXP35dZF3PN2SlZygF2gyGfbS9Yf3fI3gG%2FuGYrKzSGTjfZ2gBEQiCVJgHTlY8T54eUI4cERCwzcFL1eG5r5vGCGPlhL2dASswA7iC9JIF1cHrGYIf0sqJ2lGduqMj%2F3GwrFuZlnmZ9h1m%2FrIxycwU4DXF%2F3ywNC0Ddh1kf04CdEhBU0sCpLMDCurm7jJgPYg4g7tHHdCBiI4JBxYbVpUfUFIHeP%2FsyaJBBK5DABEwuM0xGQMAwqLBrTHcLsIr4GfDhr4DN0YEsR7eI%2BROAuIKBsLrJyQEwYkOl2CIZNxmyqq7MxVSgCA4gj0i5StGgKLMIwUTqe5jgLB%2BUyjoA%2FdMuGeAaQSQaTUOz5pGib6zgCM4AuuxI3DF40KqUMck6vQzaiRtQUOVTo4xgRkIhluT07k9sHgoA%2FjZABdEw2BoNlGVN0f20IDt5DjcikUYgllVAUyrsmdRB0pIAhSY1SeoJHWQBiytgqHanJKDgrNDQSiAAkwVni7Y8WQ5nB3vTXRoiG6oAmklg1r4cRpXyh3Hn27gAiiISZY10wDaGLQkiHg4A7%2F%2FroUOm9cyUJZ7rDsxql3YqoJ4okkMp0Hla1VRKUCO6SOuaO20XARCwDI8xzJCmASCmAdafGODkKgbhwI3QHGCmARCIASv2ZxNSHRvMsodLyZDFx5DwNId%2F7OaYuI8iPQqWKZJS6ZIt0DGBpXq5pdaqOXIMbwGG7zgsgCU262anDTvkRwPwLeqXGu64zmUiwdycz6UIIYuOBn7xrqUmcaIk%2BUat2MJBfA8Rh%2Bgo6OeFJ60WzsDsABJg3UEqDKRU50N6IbQPRkeCrrWCQeTOxkd6LvbcQdE6ADB7jobwpiTaYEdLWuVcJijobBScRhbOBp4iidNmRgRepaAH4yB%2FyuC%2F2iIOwsHc8Cgfy%2Bagb%2BgNgKnbwq0JPC5iRGGJxCCJHBKYaiCExABkD%2BCTtucRfBqEbC6S3oCEwD5IMCZBsuDJNh4CvKEGQD5GciDj0oCBtuuZhaB3tHjAVtaiYBaorcI4bm2GzsIKQqVxCoafXL6fj%2BntVIrbwkMqQehrvKWiC91fnmGM%2FDqERABjitB4bGDmhcBFJAC0kImJ0iCMIedKqj4VUgCmzeESUOHPOj5k%2F9AdfiDmPdtXjCEmH86pYz5ZNknLlABkB%2FSZFd2Zkdd9CGyOIiDFTMHPBADO8iWZ5j8PkAa9bKDOMiD1tmuJ7CbLrCcPLCbI%2FiDZJr8Z0AHMf8arzgwBHSII98m1cQ1%2FbXPocmn%2FeQVJOdRiHLgheC%2FDp0ofjRpTCd8oq7iBXZosGrpBum3FNMxo1aKpzBqnVfTp63oBmagXlgjGdg%2FI6AP%2Bv2SoZOyWbUmDTOhmgTh%2BnAxGunXImm0COkvhmvwjaePpwoKIzQCCHQCBbpD1%2B2guoICE7pTJ%2FAWQ4foIg5MGO5guIYDN3LsWLGZAwAiR5IsafIkSgAJmkn06PKlx3gyWwokRyyeQ3UyFQqUGa9iw4QOg7pr6G7msxY5jniyZ69bCwQINikUqk5oxZ0wt26MYowm17Bcy90Sa1ZsMWdn1750B0YTT7ZyH5bbePWqx7v%2BHfWGVZcN2Eu8c2HGAwTo5%2BCO7oIYkIqgClh0wLIlnku2slx3msDETcw3MDpnatcKzlva5a26fT%2FPVQcyJezYJ1dGxszVmy3bLtV189B4gxs7M6RuEFZbt0uvx5F3vMwc7ejnW93Clc41tfWtf7MTNoxYtzs3M2bkyBMu8mTuL52rV7y5c3uBouN7xE7%2FY0jZ%2BmPTvr8Rt3ru9OGYAY1JhQd88Snnn0DsMZgWgwS9lWB79jG4XYSFHfZcSxp1lF6EDt6nGWcRhhYdgxbe51p%2B%2B7loUn8RAqieOps8cQKOJxyhhzcmorMggyLeB2GE1FGonor3Ycight%2F5B2KQZRX%2B%2BZ6J85mYZHwsvrglSTEyOGOA7hx0kDvEUGYikP4JSR%2BRDBp5pWoXApahdyZCqaaUblIZoZURYtmellxy6aV%2FYAKq153%2BpXnfmvG16d%2Bbfsbp35L%2BNWnnmVGaSOKR3PWZ4qT0BSroi4TeZ%2BiTmTK4KH2NtvfoiBPCaWKl910aYaKt5gnpngx%2B6t%2BfNL5GaqksmYjqfbnSx2p8rqoHK32RgkrrnEzWiauqjO46Yq%2F%2B%2FXpfsNyNSqx%2BptKHLH3KKvhViNsOiWKs1UlKrYm3Mqiues5mx2mV8IIbapbDkluusTLmhqmPzLanb3bQxictsADHVyt99qZqIsPS8cunv%2FT%2BhZvduCgVEUoIIhEQRih8aGAyyiqjZG586MaHr3oK5%2Bsumx23B%2FG%2F9NK5IbYY47xzt%2Fd967HEwraIkg3p4JOCSHXwg8s9rhAAAB9T48PK1TAW%2FOXBQaPJrqYmOryzrPNGSHF8Fiebra6bFk3f0fF9bF3IJalBDz3yQO3AOqwAoAY%2FPwAuuByFz%2FZ1oWHfC%2FeyZOPp49kBpj3t2tVaeu3jQstdIsc%2B3i1d3iSFIschTwPwwj6BAABEP2GksA8fABTBTxgnBdBMp9l5o%2FmTPY7du3QZS1e35aAQL93o0rHdntvpQr7w0AGCArqvOle4qcAnhcSH6j%2FwIwcANoxvPvn%2B4pP%2Fwhbttx8GLaLJPz%2F99dt%2F%2F%2F3FxII%2F%2F%2F3770ws0vK%2FARKQCb8gIAL9t78EMtB%2BtrBFAyMov2xkQRLZkKAEA4jBCOpvgw3MBh3ocEEPJlCDJERgB09IwGxIIgsjVOH%2FHghDAi5whv6jRQJkAz6oqQ8APeAHHNAHgB7%2BQA5GNCIfioGMYjCxiU58IhSjKEUoAiOAU7wiFrMYC2BksYtedKIRMvHFMWqRjGaU4i1uccY1NtEZFVwGG9loxTie0RZzpOMYnRFCZ%2BDRjLGwRR%2F9GMgxLqOFfBykF9OIyC%2FecZFTRAYOdai6F%2BjDdUXoxxZSUEnbYRIlvDsW8JIlvAj%2BeWV5z6meepDHHbcob1aZqxfngue5Il3PlMxRJXdQua%2FuoWSHAHCAOIbhgEDw4wUECOYw9%2FGCxS2HOzJrD824YzPuGO85lVvl5SLmM2sBrXPt%2BpwtkYPL7DSPOaUrSSD6ATUAhAEf69gHJEQSBn28M57MPJbjLja2Zlqnmsy55r6y2bNX%2FsxJb5ulnrDnLe0hKWni4uVJXjCFFv2gDlPo2hDncNGXMe5U%2BTzoPr9pNoYGVF6YkxMsu6nPsiU0nLoZp3XKiZxzDsxr%2FLTOM9UTzexMMzv%2BRA5ArcMzpG1zcyoFKUt5pVCjkZScDgUZRGt6T4P5aKfW6Wk%2Fddmwpmr%2FTKBEJSg3DSo9hCrVpbaBKfOeireoSrUkMGtPTrljVelgtXhatU5Qu2pSbYLVqGKd2fRuBs5%2BiU6tpGNrW0fyVvXENTtzfU5dn%2FNT3eT1OUO1m2GdF8q2xRKpk5vSUunG1bRGiKaJVUlHz%2FXRsYY0qf6pLHMuW6HMPud56okeYMnKrdDGB62npO1MEXvaxTpztblt7WcjBFvkyLahRbVVZ1nr2mjNrbej%2FW1phZtY4vrOuNAMbM0kpy3KXZe5XsXscysW3eNO92HVbY9vmSNT3Zh2u6mNmXd1Cl5pijduI93UeWebXs4eVbrJLSthXemf%2BraVuzjNr1z3y9P%2BNuuu%2FtJZLngC7Ny%2BQrfA7D3wbs2KmfgiZ762YbBUHSydxlrnscyJLHMmaxsM26a5uQQucmzLHdx%2BV7fU5S18y1tiHJ9Yuw2%2BL1wh7FgJX5XC1CMvgPc6UJQWFGEibWmC1bZgI6cYyYxVcouZTFcnC%2Fa%2FRdLwjQcMvfX2%2BMoIDp2CV8Tlmqr4OSyWjouRA2PkyBgzNMaMjZ2q5tuyWb8%2Bdi%2BQUylk3ZgYMyims5eLW1UxQ5bM1LSwNRcNaDQLmsPq9XCb20u0RHtK05hpdGUePbA6M%2BfOz8mzbvasmz5X5s%2BVCXRMiWwbHWeHx4Z2c4izfFI5L%2B20bo10dyedMEv7FNP%2F%2FjR1YnBNWk8T%2BK%2BhBvGPRVwZEjNa16me86qR%2FWBlI3e8ZnYTp3M96B0XOsKHHrW2E8Nt26DaM%2BAmF6uR42rmwNo2srYNrRNj62ine9pUDquVRR2g9yq6sNkttrEVK%2B4VgxnPlH4xs7MK5TNL%2BasH92vCsY3oeA9m3qf2tr0hHnHU3pTi5CZlxu26cXR3HL3UXjOof63wVTK81A5nkKrxPXE7V%2FzVF9dzzCXrbKBCezDSxu7NCZ1zdwM728Lm65ZVHvF862bfyOk3Zv6NmYAPZuBOLzjUP95ha%2Btc5PC%2B%2BpSJvXKb4vPlq0p6jJdO2abP5enyRXlieG0dX1N95%2Fvq%2Fnl2TF6Zeg8m6MTium28rhuwV0bslSH7XMzed7T%2Ffd29bveS371wUiee73NhfGvu%2Ffiht7ro%2FD56rPHOZ73P2PRs8fuQPT940IdZ9DwnvXUUnxjUy8XxpII8ZiRvG8onxvKJwbxcNJ8Zzuc%2B6uyeeuirPnK4e1zuc%2B8S6%2FXt%2Bq%2FD3t%2BynzXt%2FWz7teC%2B27qXDuGzb3ihIj74618L8dlifEEhvzLKxwzzDYbzDQb0sYX03R71uZ%2F1fR729Z72vR2caZn3fZ9I9F9i%2FF9lBOBcDKBlpF%2Bt3Z9ZtB%2B9Ad5gCB788Z7F%2Bd7hAd%2FxgKBZ5B9pqN7xhV%2FXjd%2FklV%2FYnR%2FA%2F3mgwLlgWIjgyb3fc8SfA86fxtRfC%2F5c1lGgxLUc0dmdoujg2PFg2fkgVwDh4pHgXJjgEKKg0akg%2FbHgcwjfYMDgWezfoNBg5Nng8uFg5Unh5VFh5lnhdCTgCAohcxBhCj7g6JHcXJDh6Wmh%2Fskg%2F6lh8rEhALph88Hh88lh9NEhTGDh8AkiW3BhHnrh64HhEYrhLUEiTJihWaDhlljgYGBgYmigXHCgXBTgWhwg%2B9lhEC7g7jXgHhqhZSHhGHriS4CiWIhisThh60HhfagiW7DiWbjiWUhiGVLiWlgicujhF%2FLh7%2FmhXACiXPBiXxgZAYQARhGANzZA12yj1rFc3f%2BFXBQCI%2FrNHKTAYhbi4TNiIvlp4i1yojjpImowYygaGR%2F4jUjYgDWIgziswxQAQArgAj2IgxJwFDrWoDBGzkJOoTrGCzWyBTaGhTPqBjRmojSu4ESuhTVSJD72onA5AB%2FoAz2s0xbwQyhAQij8AACEgjyEwTCsw8rQHVWZ4zAyIgE6ogHao2Kw4yS6I0bC4w3KY2zhYicq4QSeBExaw0mKxCGsQwg0gEiEwD3E0xT0Q0KaBAGwxF18JViGpViOJVl6AzGQJVqmpVqqAzF4w1q%2BJVyqg3LEJV2OZTnwQl3mZViKhl72pU6AASjghF%2FmJS%2BUw2DmZTac5WHSZZMsJl3%2FmoljxuVdRiZcxsP1CCZlqiVfZuZaFiZnqqVwqcEL%2BBIA4AI%2BpMM68AEBmE8dDBE%2FqAEAEIAGzOZshkAtUANu5qZu7iZv9qZv9uYvZMJvDidxFic1ZMIvGKdyLic1MIEuMCd0%2FiYzCGd0Vudu%2FkJyWqd2doMVOIJ2fmcmMMN3Wucv2MJ4Vmc33MEddMN5RqctZGd7Lud0xid0OoIVsCd9Kid25udyhid%2FGmctjONI%2BFIDsAIrTAEkYJIQic8cAMAUGCiEhoIVMAGFVqiFXiiGZqiGaqgRbKiHfiiIMkGHhiiJligT%2BICJpuiHjqiKtqiFGgGLumiLRoEP%2BEAUyKiM%2F8Yojqqoju4oidKojfoojwppi%2FYokXookN7okZIojC5piRqpk2poAUjSOo2EBshDKCwoP7CB9wSDj2QDIlaGLSjiYDCBMZgIOPBkKxaDiajDWzzkqYEDrYRp4xkGnIopmcpFmrbpZtypwLHplchphOij6jjAFtjAL8EDyeDDIThoPwykTX7JZn2YqPyITloGL%2FjIR55FPABmR55FYQqlbWRkPIZIpoIW2%2FmciYQq0BlZIOgD1GgAPIhDERDTFpSmQOKCPJRMpDZOQ66Ln3ZgREYLUC6jqGIGqRblRobhp5rFpp5FRW4Fg8nBOqxTEVgDPsiDaq7OMLgTpPaqR%2F1qe%2F8Q41oYo1kgYwgWayAea2UkaxsaJXMhZT0qpaho49I4QArUpMnka0qQ4lyY4mCgIluQ61mYK3REWbOKRbRqx6RKXarKn9v1IffZ3BIyITnepNjAXLCuopoeo09yhDKuqyyeIC1Goy0eJT2%2B1MdyxMIGBiGm4cbKBcDOhcCuBcGahcGGBbqKRcheY0iKxUWOKlG%2B67JuYsKGxbO%2B4M9yhS%2B6iL%2FKLJ0GbJ6m4qVy7LA%2BjLr6LLsmhrsmIryCh7yqLL0GjIDaV8yyxczKRc2exc2KRc5yxc7%2BYNaC5NYORtdm4NSWa8fybNie1cpuRMvuxsuOoiH6X9TSbN7abNUW497%2FHizHHe11LC1XBC2yDq3XFu08Qu5WJK3CSi5MNO1%2BPC3aHq7aJi7bLq7eXi3a1JyAjWwXlqxGnmy8pqzfji2gDO4vlmPG3t3ZFmzj6uzfSgjrbpjafdrDFmHETuPEtm7FMqHorkXassXamkXbhsXbbkXcXuHc4p%2FnwgTltqvl4u3X1ljfjljw0sXDWezFgo24hlfv4uzvwu359izduu4lwm6pyi7Y0q752q7SqO%2FznkX0rsX0ikX1jkX8Yu%2F8bi%2B0du9LfC%2FXhu8pmq7bJnBblO%2B2nS86BG5e4K7TFu4Fkq70UrABo67vqq7lDG%2Ba2e874q%2By6i%2F58m8G%2B%2B9Dle2R%2F72vWQzwWRRwWBzwVlwvTGRvHapwpxVvteFkhQ1WBA5bvdpwl%2BGwWOiwWfAwV%2FgwTADxSwhxJDKw0tbtXNztBI8voGGwvGkwB%2B%2BFB4cuCJeiCBMwCfewCcMvCmMTEasbCw%2BlCxMtDI%2BxDJcxDYNMMOSQxQZwDrfxDr9xFcdxBc9xSWnuJzqwS0Cw3Uqw1IrxrZFxyZkxJO9FMDgxpEFxWEixWFDxVljxelhwFi9wHRscpTTs9R1vLSYvRy4v8S7l9xFyFBvyFCNyKSuy9aKyS2hxW3Bx53qxXIBxJWMuyjryS3BuWJwxR4AuwYDybejyKPMyTJiyS2BxMKsyM9%2BjMf%2BzBTIjriVHGyb%2FoSan7yCv8b9ac1iQcjb7MgIzslAR8zNvckdI8hdTMjkr8%2Bx%2Bs0c4c%2BSqs%2FOyM9S2L39R8xUDs0cIs0vQL%2FeG81qMc%2BmWs9OdczWmc6t6crgpNEyI8jtj80tos0dwc0N7c5wpiSszICybrCwzKy2vcPNSIC6HsjtzBTyPtDz%2FMEN3hEN7BEQ3sERzKj9XtD%2FvL0B3hEBvBTTbRRpPs%2B56k8Ye9d4hbErThz4fc1GPsEX3HUazxVI%2Fcml1MgAb9Ogi9IR59Db3NEf89E%2Buctq1ckq1dOy%2BtNHGdBHb8tzVdDWjdZOpdUmz9Ua4Ncja80DfsdDm8eX%2F7vEl93Em%2F%2FFacbTQAbZHgDROi3Ry7PRC07NeJTXL4jNHZLU4b7Ubd3VmfLVHavRM37JZQ%2B9Nb0VOZzZlc4RJ%2BzRKS6BKzzUSPxloefZGhPUugjZ%2BlPVsc4RlwzZmewRJN4dgDwRhb0RQdzFiV65iiy9V87FvDwRwg%2FNGE3dUrxTvXrf6WTVuY%2FVKzyJd569dZy5e2%2FFq73VrC%2FBrw0RsK7dmnzJnW5ZhM7VwD4RoTzRpH7Jp3x5qn8V210d%2FT0QgezfGSnV4M%2FYHkjcTm7du7665YdkSY51erxxfb8Vx03dyd8Ry03ZzC8RzD0R0F%2FN0g291h7F4m7NjozNkH5Zk%2F69ecf%2FHfL9EfYv4fa91fsfWfov1ikdwiyczhF90jGf0jHPIgq%2FzjQ%2FEh%2Bt4iHPEiG9Ebbf1bU%2F4xJw3yab3C6%2F3Mrc3KzcxbGgAH7jCJbgkADSAHLjCIfAqm7s5r4Kravn1mD05Olz5YGe5hud2lVm4f2F49iy5OSEWAZhmKIgDPSBq1rCCPOACVRKTo%2BMCRoEfnqNDlLvEjlN5jwf2j5sXXHfekE9ykffzkXt1koO1am%2B4SKRAarqmHBzO4BQO4ITCrKv5sV16pnvEpndFpzP3p2dYqFefEeOcl%2BsxmP%2BzmMc1maeEA1yNEmDS7NTOD8TOtNsO7pxEV2a3QPxOVf%2BN0t1xu55r9wK3UnlveYU7%2BIVDSi0tu6hDipGlAEBqgBChj5aSjxJcgr7vuy3wwgP9O8AHvMAPPMEP%2FC38UcEnvMIvfCzcwsI%2FPMQDfBgBQ8RXvMIjvMVnvMDHAsZrvMcTQwURg8ePvB2R%2FMhzvMlrPDGEkMinvMU3vMtnfMfH%2FMITQwu1PM0%2FPMrnPMTPPM8TPDBUgiCnRAo4pUuKT2v%2BEBvcOwBowAs8%2FdPjwDF4A9VXvdVfPdZnvdZnvTPcwtZ%2FPdiHvTfcgjOIvdmfvTc4J9qv%2FdZnQyywPdxjPRPFPd17wzmAgSTUPd3HQjboPdw7gy34Pdufwx7swTkI%2Ftr%2BQxDio73bLz7aSwIYHL7ji%2F3cT77Y873lh%2F0uDP1JhIA1rIOaa5IlSfsmRfutcmV85zCXx%2FI5vrgfn5m5a3l7%2FDdRl7pRn%2Fppp3pqE3pwjSMBsAI%2FBEIPFEEJANMwaMCrGlMwacAh6MMy0Tl%2B2Xml4fm4mzifx52fIxygJ3Fvuzuxszq264M%2B8MM%2FuM4UZOs%2BNCoAbAH6qz%2F0J5n0Yxz1lzg6nLjwcvsGJzg60L5ZUDRXAwQ6gQMJFjR4EGHBcrcSNnT40J0mMO4eVrQ40Jmzixsf3irHEaRBdc0cADB58mQIJUVYKklh0oYaJQROxpyJEmWCZupC9hzozZZPocD%2Bsgn1GcUYT6McFy4NWUyj043uwGiiKPWiR6wXswHbajEeIEDxvlYkWvZhU7QNI05c2zDj24Za5YokiRNvXr17TepUWrcgUMAHzw4uiPSvYbWGB0JlPJCq1ccC6T7uOhld2LGYCz9ezLjt1cdxMVc2PLIkX9WrT%2FrFLJhzUcyIJ39m7HhyZNGMTRu%2BPFkz2cmdGdseHBoz6cm9AaNm%2FZyv68mwh8ueTNszQ8y4H%2Bsu%2FXHy78fBY2M2Dhj5ZOWPmdd1Dh0%2BTumPqT8mzhh7ce2TuYOuutuw9uoSjzHyqjNvP9AkAnCw9XgDj7H34ptwPsbqY%2Bw%2Bw%2FJTLMHbouruv%2B%2F%2FMCPQMAPts04%2FzNIb7UP2IDztrgkp3Om1oMqbLanaOjSsP8O8W%2B5F37wCTizhTkRQxQWTa%2FHBySSUEboKDbvQsAwH23Cw8wDr8bgQgRxxyPGKvDG7JN1Sj8kAg2wuRiijpHE6Gw%2FEMbGN1HEHT3fqbEhLoe7UU6A%2F%2F%2BISJEEt%2BtFFMDEzca0%2F8eTJyrrOM7SsFRlzUE0n23STNSkHo3KwSOvC8tBuPNkEVWEATWtHo9TBBtVS0FHnGVRrUYpQO4NJdc%2BDEH1LnWCFFVAuEgdj9Ks7a0XVE2ncIQZFDkVaNhW0LG1UWJ4w7SnbiohtdFNOVfP0InfiOTeebh2CTZ1z%2F3stS1S5SHUoWEJUQABfBDaoQph3CeqzJ3c2wfeEcOKJwwAEkrgq13KPwDcPI9nyslF3nikF41KE4WVNwIwFDFms1AnHDRHyRUCELmzxBsmC3PkD3xz89elatLpJBeNu0Nk2JFlynpmyjuV6Utzo4ASpG0P%2BWPqPVGqpJZhgGxJMnVSWpgRop%2BKll0GL5m1InS5OPlmEVLr%2Bt1WhBCbYYDcMMGBhgRq2SJ0gIJY4oV%2BT7aYMk%2FPdAIljsv7q47pCdkqdboYYO18UBNfRIHcIwVeHwTmq%2Bat48sg3Dnd45iicFvCd5GyCvkWL6KL1IvehqhlXAAELqujGX8HicduAI%2F5Kx2rrvEnuHKSvEXLHjXxTtiOHfGcI5y9BlVpI2EBXnfVRke6UWqC1ESg4HkNMMKELhp3JE%2FtApb5%2BoGD1rPvuivT%2B6mHGEVDhGculKlyuw5dSJ4l8W3DjDKLDVxUS4zyCRI965Ttg9Q5SDl5MDx2So5z9yqWkoenAf%2Bb43EZCN7rdBU1TqVGd0SiYvlTID18GEALzEGI73OkOML07iDo2MQMDXAFvFRGeSISxAXwF4RnuEhsCDEC6WalDGJNYRC3qp46FYEMYwpiVLyZxqzthYxKbwMZu3BGOVSyxG1fRXsES5wtfPGMg1%2FhFLRaxiWeEQzTPEEb9qCjFCIYjFf6TCGL8IuY%2Bin3FHYvI1w7skAe74St8C1zfAc8HqOihL32P%2Bstl1KfAtehPbQNDpMHi0Y1DIsAXPOEJGycRjC0OBIpSpNUkSkE7Rj6DEpMQBhxdho1KLEKKYpwcAipXKQuuxR2pgF2%2BJnGNqCAwfeVTHwQ7iAAjRhKCHkEgJFEXrhHihXX0OiG%2BoOAGN3TBbwgwxFXudC48CcYdhghCENwgSkeaq3nxgCD6KOUyYpADgtR75%2FTscYWEdcEeJdxhQeJhB3xZIBjk7MYM2CmLO9ViBxbAlwQ68IVulIMYVbCABf5wBAkgQAJOeIYdTIAvEYwze4uYwUcl0AJCUGSMBv6zw0ahQBF1xAEEH41dCxahp260wAItiINELUCJeCyiBR%2Fd1wzaB5E%2FbuV2MUMXOoLwNhVABh3CQNUbRdONZ9QPG55Ao1fHuolaZA8dy%2BKqQLJBDHdI41SrCGMJOYJJmkEBXy1gYQRX0QIkxKF%2B7pjESicqgj5krwsb%2FYMTJDo%2FrGVPGFDwwEFzMAml8MQOJ4CdBXLQ0wjuspeA%2FCVa4sGFsT3BmOggq84IIo2vmuOOWhVrBAXSzGfeSRpbxd4twvHVMIZDFp6YazVFeM28ZBNs20SAJ%2BwRj3nUwocIqAJMTZWHOExCFt4gxqyekYpU5GJkODMbNgyRh2pRpBR2wP%2FlVbqBsVvVghB%2FsGIkn9GIOBhCFrMK1MVKUb9aLG2%2BteifwpxGwYESxB1OmOABaZcuJJ6AcQbogjqIMWAinuxeCZvoKu5kCPnZAU%2Ba5J7bFIYnDzNOAqVwRzfCSUQPdIMSKERAH50qGdIaFGWbyMw8StGEL9ghUJPIQXQ30AJDiDIJHRBBHCC8gU2UoQMeyANTJWCHeVBiyPgq8h944o1KPGGyIDVBGVx5yTGVRYBdwJs57hksTzR2bC%2BNRxUOqmEt90sdtSgp44CnjiugmHQS5CVdITLaZD3DZAqowmYrcQ139MECG9ABZAzRgQ3MgHaEACq%2BPFBZntgWpqtIgt%2F%2BNjAEs6GDF5TYQAe6UMOPioDMhKaXNY3bmqPZSbmbuEo8MIiAmgbyXvlagBAq0a7iKSwe2PChCv6wZ1%2Bn4pMbWESwagG7HMRBpxJIQv1mZQ47hBkBC5hBJ8iiOXyVwQnZLsPIIHyyuF3kwJCJXxnw9hd3IMwAPJ3EE35IYQUjct%2FG%2B0MedPqHeTwjulWYxBAlIIx4iLht%2BEoCWWzo60kYot1x6GS7ERCEIVzBHUxFmSEWsYN80dgh75NKIE82AzdsIhzEaAdMO6HTsZGOfWOrxZ8RMExnpsLmJ9M1M1CQL5sfAbZm3sxWEhdszxbkLO5IQsKOsIhF9Brkc84XFBb%2Bni9DkKXXHjgDIUQugVQ8PF9emAReEbC8eIBW1mwx9FYELQJhtFsMjvaFTnU9q0MC9MRjk4AnuihAnKeixRMdZ6o5rQA7G6AMHwxJ6mrdl1tfxHX4Yq5zZeG3KjwXzvkyQE2jimxsTJYBKB7bBp7hjlqkPuhETIKwoGDnfFmgE%2BbaHEgZZ9kW507yBIn3rLrRbjfkMH3CWIQdVtHcSZgUG8T4t%2B7soUkELKK58auCPfrww3nYwx4D%2FkP12Vb6uKVCD2JQhz2kji%2BNFx9fuhtZLXSK%2FXkII8won5iN18J2DDdhFWzqCBJmBgzBXgZITz5JB3RAd%2BiMYJIA0waQlwz%2BUIA%2BT5NaQGP6APYcSumQz0%2Foz4MMojBqwRDiABuaa%2FdkRus6rl3UQeQIwR5KYaIoYR7iIRxEDgrswQGhYBmaK3kQoBPsAe586UxQ5wcBigzwBQQ0gn8GKF1AUAIcquKGQGnajd5sq5OCzQPKwA60UBiIIcYOKg80La%2FCoSwor%2FKQKyEyDwGOoAu4oAqi6%2FrsAccwsBaGaMQkLtnCTASqaHHwZQdkwRB0ahKeS6c2wBBWwf9KYR4ECV%2BEwBMmod30ytwGSBYWIbrIwB0Q4Qd14A8sayOGz%2B%2FwBeRcZlXcYR58gRCqgLD05RikD1%2BOTx2C4aMsoF%2FiIQmlyx5Mq%2B3%2FuuAKuuAHn4D8tifiSiwznKES7AAKVGCY3q%2FdPOuoCMaV3OGQ9C9vnorpuiGxGMcCjEgW%2FqALngH8cvEJEhBflidxVvAEgggb0OG%2FukAY7GEeyiD%2B5uH5UKYPoiaL7KgDD81vXsqeZIPz8mAZh0kFHZAMyEIdeg0Gj01mBCIeYGZ%2BwqHXdKAJuKALBCgPhHDBRKsIkwUEEaAUYnAB8KUR8OQeReAZ5uEM%2Bg0dSiEPuiAc5NEBr9Dw7OHEBq8GhcFvygAM8wX77MERPQAb4g4h0LDW1PAolSvCnGBWwoGNcmEewkEi89D0wswNwE8ibZEsgq0QQ3IR5kFPRK4Mwu%2BH%2F%2B4pHlahsSbBHnavBSJoHthOzexhiAAq%2BIQvR8Di3x6SIMawibABCj4qYQ7xFf9NFkHQFttliLZviIjobRImd4bRKhcmmETnbXgPAZxR82DKEWfgsqrRA10GG0UGFYPhD5bxZPQqguJBGAyBFXWqpnLODhRyBXFIv1CRBKsgqepxFVJvolqg1fSrH9GMFI0kcdxAD5iB2h7mMhvrIBFJIX8QBhdTOARLy2oh0RxTwySMIweNCO8SJOKBHrdHGKRBGIJt9kZGgI4MBvAFGl3vD66gFW1ydHQw%2FnZtiITgJxHAA5pom0SgzESG1tLw8uiGKfNFAWCNhdzMDbKs%2FI5t4v9OD190rRJPgHZsyxBjh9vEE1%2BcIB5ecBmKghpjsS1%2FiCLiYYhUkOfULHjysiIK6qASKnt8IfUsABHoMmE2oNU2AXY2oDBj8Qlr8RYXcxfP0Q3KoAy8yQ0WAe2I0fzi4Rn2bAbyYBWOTTMRoO9Ybnum8Q%2BtcXhG0ynCARtKwRMMZsU2QQjyxaiewaMuzDdj85D%2BQDhWkN4CpRbiJ2F8U3e8QQxir%2BMCNHPOjOnYTq%2BUIh7u0QQCsKrmxw2sJmbaxQFZVB2k0x4c0lC7b3ueIdh2QAyQVEkLcQg9EjztBP5AagNONdtu5WA6tBOkkdpygAEuU6fo05nsge2ODyKP7QT%2FGA8BVFMdZBBlABVxBjQpC7Qi2NANlGgRUsFZRMmTHBNlHlQPJRQBUqFddi8IggVDEXNDjw0KXBBfFCFEM8MwS5QFI%2BjEPDMeVjQ0E0IU80ynciCIbDB%2Blgsd2o0t7SEMfRQWEeAwhVQxB8gexvMIwA8n%2F0CsYsr85kGTiBL8%2Fm02S7Xv1GEVdIoGk63dvNRXwNRVnkGAmHRWoLSx%2FsAd0rRXyWAThghO8aUP5hQhhcMcek0FumASCNYdxmEZhAF55HDGRnUj7CpgHNHXOMljtQwbEDMe7SEOHnUFJZVSNckCGNEGfzAH%2F80LenAelqYUDCZU6W7unEJLZYzekMiH%2F0QgfhIycdqz7dzAE46NVtmS7aYLIsczCPZTBczwV01KWPeHWI1LKWdIuTxBLBcpe6qAAOXrHidzD%2FHFWisxW9VzdDK04XgCFzv0Q%2FGFEMYVHUTODsw1W9H1HNuFXVuUgojHf66gDEQOAZ4gcfyGDG5GgIiyX%2F81doZ0gDLUX4NhESTgbcYP4hYWaicBG%2F6gsY5PYkXjB09gWT9JYyOHY42imTBNnq6MEJ%2BBpWoB%2FMZzZRGgZSHyZWeFFmPHF%2BwhH5a2Dd2BEvQAZQ%2BOEkTu3coCaLnFwmagC7qA4%2BJgHlYhX%2F6gGyYhup4TAZwWcztJgFQgDwyhXtnyxCxAD3Q2X%2F9SYR66FiswZ39MtshUAINbILosFFJPJgqDBVhZD%2FzY7m3tQSJV8lwWCpHsFm%2BBFUCNcob69pr%2BViRyrWvA9fryQSil9SoZ91r7DXKdCXfdoAZLNSvZbgZsgRzs4R6Xy3N5Ip1Cd10RKaA4QhQDpTFPxgBmILAMt%2FGMbhcqjIjGttpAakjfpgrkaTx7Ll9yAI5%2Bl8QidM8UgGeDYMX8JveyZxNiT6eaVzT5L3OOrVfjYBG4YIO7QRhGNhw2Yc%2B2t3sz43vhlWXDoRPQcxcTRgVKAYoOCVdJS1Cz8ZPGBgm8gSd%2BMFr9x2AiNToxF08owU8zU2oWFTMRwAnaRSL50mv%2FP1IqJBkBuCwcflkdhLan3METTuZz8xakJqEbFiHMEhILg8E5Se6QJGAVWHhWXHhvXUWGR4iGC4IN%2B04kRC4IBDHY7vZJqbVxsVVbDQ93JeAKDMHkQKoWHq4kEYAFvECjfigz1Bl02y5gt6cL2ikUXZRu1KELT0Z2uC1xLMwCuuAIPKADDCGjOqADQGwWRcADTqBfiIeiE0kd3ADcJGAImsgTPMAD3M4OKHq6BMvZZuAPTuCk32gGTLoU7G0RnK2bIJpk%2FQiQmY4iZYwQ4sEcRE4BOK5XI%2BiQHnkFE7K2VNeodcAddgEE8sUDdMoCOGw4z1AbwQ1l1sAWigKJVFcE%2F9xgpstmHsiAos9AACHaswQmB2zOpcgpsuCsoWknnaLsCGDYV77WKFa1dpunG4LtcTfX62yqVCXgqUfGK%2FEEUxmnD9yBV%2B%2F2mjktm%2F1km1Wnmw%2FIhn2lDGzvZGShUt%2FmCJItutL5bR43HCCsiHD3wvIFxCIIx8ZGBVQ1D04big3hbTwzkLYThuCNoMvFVFBlE1SledDhVIa7i74KG26hG1yLtdABG6ShHQVitSBjWcwKe8JBGqSBtXqLu7OHFhoBVcKoud8IurfbDBGMWkbmGaQhvWvMZ%2B3kGaqAqxEABVBKHTxBgPgzDlTAAjzg7I5AscQosSzADcgpFZxtrIFKBP%2BCgRwq4QbGZgaeyZOXDnUsRrjd6FlkI3GEu%2FXK2wyb%2B7upG72xahWEO4wWaBfEG7uVQrtHXFTLIhxyYKNKkSBuZ6NEQFUhLajKjKXz5QQyywLoZ3M3KksNYb97FaVSbaOWZ1ZSYaNUoLJ9Ain91lhbpxZmQMutdYbCoQyqWgJUwBC4YAZYICz%2FQMsjz5O0%2FFY2UcsnTB3MAQJnwBPiAQQ3wA6SSgJMYKcDZROGwAIkQAJE4Aq4LZDeHIoHawa%2BNXGgINAlIJF8W9YcJZ%2Byp3qEBXoUCJmOqIDIx5uVqXyQwdEcCXs2HZouy35UjjSfYRJafRI8wRbYIX36t9VV5av%2FnkFnbv25Vcu31NvVW%2B%2BrZqmtzKEUXH1r4%2FtnP%2FnCPb0zHEWUSl3TLUmfKh0dHIiBkkmv91qXpULXD6IYaEGOuvvWXYbVW91Zgj3Xv%2Bq9uygSs4iW0IG3xr225D1ZLrtoMrtQLCYYgmGuvCFMPrAW3XvfTwnB3KESaCEYWo%2BCgkUYgmGWrPi3AQNg3mJugOl5dzlP8IRjFInUUb1O1AWaOh4dKMnTDUfZQyVasiRt5IKCXcXUBcIZHK2ApN3ZOd18Pj7j%2F0Kaoj3b7aK4Ks%2FWeh5sEMjfEQdpQb4giMEbqP1Ypf0hrtgpJn4tKt5aLh4tTgct8Oct4hdeUl7iV%2F4t%2Flr%2BLTboLbC%2B3n8e6AEA350CVAqljCfXIWSoLKB%2BKaQeLai%2BUqy%2BLMyecP69RE4%2BhrxeUsAemPhaLsh%2BLfheQNEe6Nd%2BKdqeI%2FLMAyxgBLitIeT%2BK%2BjeKOy%2BLPAekPT%2BKxQfK7Q%2BqzFE8OWC83MZ2Y0C8a9eaIDF3sXF8Y0C8jnCHOj98k9fXiJ%2B8DEDHTyf7kB%2FK0T%2Ffvz%2BWAC%2FLjAfK1J%2Fgg1%2F7NNkMIifbxmfQIX%2BImo%2F8p1eBHX%2FLTRfKJgfK4B%2FgoUfK6R%2FKUi%2Fwtt1LZRfKsAfbJ1%2FLVp%2F718fXKi%2FWK3fIrB%2F%2Fbl%2FLbzfJwCi3C10BAsaPIgwocKExZwt%2FnwIMaI7MJrcRbyIseCtchk7QswGzKPIhPEAAYo3MmVBYNlUqhToMqU7TWAsxhTpzOFNkRt3dlTXzAGAoUSLGj2KNCmABM3U%2BezozdbTjiynZoxizKlViDC3RmzoFeLEimEf9iyrECRahSVPrk1Y9e3BrnILzqxZ12DOvAbP5gUqVCmACC9KFNWAWAOBoQ5eaFDKVCvfqHxXtqyMDqvkunT5gq081iZfv3nVVm6LsnJcvp3r3hWddy9m0nIBC56SDt%2B9Q4ttrJMnD98UADas4YO3JWlkzJQxr%2BaruXLrup%2F5hp7NsbJpvqidX2Y9EDRN2HVlV6b91nbSEPesFTnU%2F294GH2H%2BASyQQDXOiWs5IVAulxlzan2HXRZSRdeZdXldd152fG1XV7dEYjZdG%2B9hpl5oz1Yl3pIhRBIEQC8wM8cAByyTgqPAVACPocAMEV8SBHQFHMheYdZZgeCl6OGroEBCnlyofdWhHVNyNdznCXI4HgZ6uRgZR4Kxgc%2FIuKiDzz4QEKADfzUAcAP%2FLABgAYpnHnmC8eU402bbr4JZ5xyzhmnMxvRiWeeeQrkjJ5%2B%2FvkmE7qwCWiheMZiaKJyllNMMYQqCuk5FD0KqaKxZFNppc7YQmmmgJ6zByDneJpoObb0Saqh2fCSqqHl0DRqq38y6qisgCJqq5%2Fl7JKAYP9DhcHPJQQQcAkkQPDRzxheyhFmiTCGAm20tvBiS7XWXottttpum20ssXALbrji2uLtuOaea4sRmVCLbrva3vKtu%2FJiW%2B689hKThSTs2itvLLfwO2%2B9ALdLDB10EDOwuwInbC68DKPLiyRZIPywuQtXHK6%2FGIvLSyW9CgZsKIER5QA8oXgJpphqzFijgDdSiFl0PD6J2URBYoe\
ZkXIhmZeSclm4FoaV%2BVgXkWhNedQU%2B4SyWJlyiKiBPJewBwkAW%2FSjBIAtTyYVjjHvmBfQay34I1lRaveyhCallmSBS9bs5NBQbihlUEqFsM4%2BrlwSyhQOpIMcJPxkHYo8agyzzor%2BRgXIdY4%2ByyVz2EzmRbZcDdKNNmY81%2FX4WmKXJTRfRA%2FJYW12J6WEONasns7KNuAijzhjDJVCf%2B4pt3VeA7adY%2BRvY1b5hRQJ%2BZbRaOn81uZydY7W52GFHtvceRkfFtJFDYt900NpMPL22h%2FFuO5dw1yZ7z9PTp30lg%2BPc%2Banre31zNbFLbr6pNfdva%2F6CxZ%2BXbv37La6mO8tzgtL8ILGvrNBKG1Hgh%2F5JAc3vMgtR9TzivX2h8Gi9E8u%2F%2BNcACEHtt8pyH4INBvmFqg5B%2FIOQREk3lpGV7zSped0GayhBnPnv%2FGtsHwhPF%2BODoiWy01PhkVi4M5UCMAKoe9C9Iv%2FHgWJeDQa2tCGG3xLB5f3wbcM0HNLfAsQQZfAE5bGiMlDogeV2EKate8vUpxiBqu4liu%2BhXlo2WLzujg2EgYxjEPMGRnXorw5ZvGOaZzgGjvURjfuD45okeNa6FgWO5algF754vP4WDQoHu%2BPaAnkIwc5STyCronl0SNaKriVCyqSfzjkoA6T%2BLXN%2BBB4prykCfvoPu6YEYtoFI8E6%2FdE%2FK2yhowsiyPRAsmwSDIslNyKJb0ixEz6MYVueaAIm%2FRLJx7SdPkbJitl6UrHgTKSPSSgKMvyzK1E8365VFs1dwhBX7oQLTBcCyqtokpvgq%2BVVnzlGWPJQlrWDJPsROH7%2Ft4JS%2Flhc55lqecpNVm9ROpTa%2BDspzh7V04u%2FrCW0CRoDKd5ULYlNJ7zy2Ypg8mXfE6UKMUMyzHLkkyvLNMrzbRKOq2yzo%2B2s4EI%2FadCXUNKuTi0LPecikpXuhR%2BxtGfvAToT9M30FtKc6dH7GlTn8pEkwqVo14p6lOOutKWeuWlYYnpVma6lZpO5aZTyak9IRoW5AFyl4LsZUkZGpahhsWrPgHrRMW6FbJ6xaxWQatV1PoUtj7FrQ8FqS6tWteA3lWNCkRkN5F6w4ou9aJOJalnuIpTj77Vse4UqU89C1StvkWvXYVrKiWK2aEA1iqC3Qphp2LYqSDWJ4r1CWOJ%2Furarci1k3T9pF0XSlkxcjO2uNNsI5kaWR46l5nnNCBo2yraxlK1jJA1rmSRa8jKLpe5%2B5yuS6HrXel%2Bl3LXXWx2gUtanpr2qqi1XFBX296n8HUnftXnbKdSW6vc9im5fcpud9Lbnfx2r8G1ynDL4klkjpOm1VXnfV%2BYX5%2Fs9yb99eZ%2FnxLgqQzYJwX2yYFvkuCbLLi18a3qfKNb36zi1Sus3cqGY9LhYX7YJyF%2Byoh3UuKdnDgmKY7Jim3c4Kk8OCwRhumE01phnF6YnhneyY1dkuNV7ngnPfbJj28S5JsM2SVFdsmRrXJllyzZK00u65MPG%2BW2TrmhVb5JmlOS%2F2VFbvkmXd7Jl2MS5piMWSVlVsmZp3LnlKx5K20e7Jt1G%2BfFzjmvdY5JokWSZzfuOSZ9vsmfXRJolww6JYWWyXsZ3GLuvji9MQ7apGlcaZdc2iOZnuKmXdLpmHxaJaF%2BSaQTG2tTS7WgY6TmqiV83NTOeCs1RnOS%2Bwrb2N5aJbl2ya5T0uuUjHokpR7JofX7bJ8s2iqNtu2jDfxrBb%2Ba2cFOyax%2FEm3MTjsl1VbJtUeS7ZFsWyTdFsm3NRzunYx7KuUW8LlNnG4Vr9sqzUZ0wHEcb6TOeyT1Tsm9RZJvkezbI%2F32yL%2Bt%2FPCYDPwpBRfxwYWccCMvfCoNB7cwybs4pf4%2Bl7PqxaoX2%2B3vU7N4u3PtLrLXa1%2FVYhilbLwscycukoqP5OIeybhHNt6Rjnfk43YOuZo5CeHi%2FtzmQVz5U1oO8JfDnKUyNyZ6t24g80J5o1FdtrNT3fNjOznZQXc7y3HOE6vjOeJhLft5aZ52oMtF6hmhuqX1rmisM1nrcxe8q4VOZaJbduyZZc7ZG1%2FzVuex7duUy8h9UnIfn1zMKTez130CdpCLnfJI94jSRcL0jji9I1DPCOExYnhZI34kn99J6L08ekGX3tCn30nqq776o4TgEMO4RAoYw4fmPx8ADgiE9JtrecDnZfYZqT1Gbn%2BR3Kvk3R3p%2FU1%2B7%2Bfgi%2F56%2BDIp%2Fk2Of%2FjkXw8X94DEOqzxmEDs4xLrGIZQDrF%2F8OB%2FFJV98RN4XIcW4CcROodkcEdcPod5mjdKkEdnkjdeSIEBkDAcctAPL%2BAA6xAKABAG%2FfADJROCI0gEBCggl%2BdmGKV2cMZ2oMGAb8dzDyh3Leh4XUeBlGaBM2R0RfEDw4ALjbEPfNAsYeACRQgARcAPs3MUNOIO6iCFU0iFVWiFV4iFVegO3kAMUZiFXwiGX%2BgOxOANXhiGZ4iG6hAF1GCGaeiGWMgLbyiHV%2BgOOdGGcyiH8QAk8YCHfagOvFAOfjiHW9iFgpiHa2OIbziGZZiIblgOcdiIaRgPoAAGfP4YiWdYh85wh5eYhZDIiWDoDhGnAeLADysjJsyyLMvSLMwyBdECLZdgBVQgi7NIi7Voi7eIi7i4BLnIi73oi1Swi78ojMNIBT7ABMSIjLwYjMnIjLS4BMvYjMxoBT5gBNFojdVojc34jNnYjD7gA7HIjcgIjeE4jONIjr5oBN94juVojuuYi%2B3ojrdoBQWgPyEgB%2FugBCjTLGqgiqdYJmiSJqigCwNJkAVpkAeJkAmJkK%2BQCQrpkA8JkbqQCa8QkRVpkbrABKBwkRvpkA3JkR9pkJngkSAJksZABZjwDSmpkivJki3pki%2FpktAAkzNJkzVpkzeJkyt5B21gDCRJkv8T6ZMgyZBB%2BZHGkAhW0JNEuZEiqZQcOZJNWZGo8IMO8AOPEQL4EAhXGQhL2A9bUAL6sJVK0JUss4mfqIVcWJZmOYWLmJZqKYVr2JZu6YluaYWZGJdmqYfJ8A97yZd96Zd%2FCZiBKZiDSZiFaZiHiZiFGQknQZd0SIZ3%2BYmP2JhXOImVOJlaaIeXWYVzqZnuoA0%2FmAL6MDVy4A9hQACrUwKHgA8vcJrWEAKQgA8uoIKNY4Dbl1GEJFAyqJeJyZu96Zu%2FCZy%2FuZg36Gh0J2PJhUtFJxh1gA%2F0sDRCoQT0gA9gORRTIJ3UOZvio30CdJuhFIPWAQa7GZzjSZ7laZ6DOZz%2FtTlLkxVeyuWDvmIDW1AE2vMCW%2FADRVGf94l9K7idIPSCkPadDBKe50mgBWqgvZme1rSe4AVMnbcWtUZFfjdWLFicnXVN7DVQ4nmgG8qhHJqg8HShdYecU6WclCdbEhpYFGpuLpiDCYh3UzegHSqjM2qeHzpSIXqc7Zmck2eiSfWfAKaiBseiCIhOL1p4MUqjSaqkiWmjp4Wjj2d3X2ekGUF%2BGAGhxISitBWkJjekElikGbqkYSqmgtmk9PWkOhilqDelGFGlF3Glb5SlQNqfWtSd1BWgP6KhY6qnYVqmMHamE5imxremF9GmEfGmGNR6ULGlotelf%2Fqlurmnkcqn%2FxCIg0QKTe4XE%2FCne%2FJHXomaEa%2FnEbF3FXVKYXe6Pnkqqam6oX3Kao56qTsIaz34oHz3V3EKYosKfI26oBgKqarqq6tKqRVqqRYGq%2Bwmq1H0g%2FJmqzyGq%2Bmnq%2BZkqsKDqr9KrePJqmjnqsQaqO83qBFRqBBxqIu0rFzWrJ6mfqBGqmuXm%2BA5rdXqrggarCvaos%2BDqS6hqeO3e7RGq%2F41rnxWrrp2rryWrjC4rgLaru%2BKsIZ5rRGYrVJWrAzXrRDxrQ8RrvrjqRgBqlQRsNg2sABasHiasCHLmwtbqV76qtuaqRFrFvkKb8kqcf3Kaf9qbRuLbx2LbtGKQAcrsjvbl%2F8kK6wmq60jSmwXyHowi2sya280i3E2i3A4u0c6y7M867PyOqwOi7L2qrILMbELoQ7B8DEmerEXkbEZIaoYwX0Y4X0XoYBigaRR67Y9G69COq8nK7Q69RfB4LJ996O3OqdrcbYXkbZfkbUJMRFQ%2B7YJO7VyW7Vy9rB3d6xlUbG%2BErYRMbYYUbYX8bcREbgQsbYPUbiHC7r%2FkLhcOrdBq6MkyqNga7TUhrQWp7RNx7Qo57RgZLihW62jy6ila7V1O1opta8etrr01rpL97qyF7ukN7uXVLu2%2B6u4m6u6y7hXqxL36m4smxGR%2B00FqKD%2BCb1rNbgI8bnMG7XO66zd61v%2F9Tq934sQW6sQ2AsZwUtxwwt7xTuqeyu7H3uq4ju%2BcUu6iytpjSuljxtReVur9kuufVtHxyt8ydtRy6u%2Fkkq%2B5mqcUMq72lWiqmvA%2ForA5JTB68fA6tS2D4ywEQywE4ymFQxfKYW3Peqj2gui3NnBvvbBoeXAIqynJDyzJgyoKIxqvkvA%2FBrDrLvByqTAHoy%2F0mrDIYvDSavD9ArAairAFvS7Oga%2FSSe%2FoUq%2FZlvEMnzEOZvEiMu%2Fueu%2F5%2FvEghrFr%2FXDwBvEwjvEMrXF2sZ%2BpKa%2BBhG%2BX%2ByuS%2By6TUy3pzu079mjkwsRlXsRlxsRmcsVccxtc2wXIWzHvorHxKvH%2F6bboOLlxxjswjcKw%2BbLW4pMEHXcyM0bxs87xupWxtx6xvg0xVpWxa53xRr7rBrVxU%2F7ybcbyuU7ygpXyil7ykbltSwMyA8hyBFByBBhyA%2BxuQ%2FRuQvhybOcqo88v5G8u3xst6lbtGscv218Vm%2Bsb4jMb5yMDsvMzJHqzFgMzdHLwzt3wdV8yU6aybeMYt4MzuF8w7UswZqMy9KbEtQ7EuybEF37terMn%2BrJve5MZPDMyPI8puPsyvascrmMtbv8Vb0sGEUgB1PQNA6gBBk9Bf8RJhX9PZUX0NtLp9b8dNzMcQZdwwgNrMRJtUAbzZPsnrOarIHAD%2BsgmovBhPzAD%2F%2F%2FkBxboA95UzXZmUPYXFjarHEmHXUordIQTM8lzNCm59DpC9HQ9oMaYA2H4ACHwA8vAABycA9KEAM9wD3iMAwaoH9cXV7rbKbt7NI2pdRLvacKTbZZrLlIjXvom8%2FejA78jBAq5QAE4ACXAA%2F%2FwX9bsAWP8QLUWQRjiRTNgM8Up3hl5Q0Y9dgl3SNvDdcJ3dTWNtlPbWiUWNkeoc88UTMR5wDWwA9hAACnqQ%2FigA%2FiUAL9yA%2BoGAa1XdtqQAvIkBO7zdu97du%2FDdy%2FXQyxENzFbdzH7QyxAAzIzdzN7QxL8ArOLd3BPdwNMd3Xzdu3cAvYzd05kQUpndnnGQl00N3%2F3K3c5X3dw43e1y0x6z3d2u3ezl3d8d3ctPDPSOEAWxAK4sCaW%2BA3SrAP9zHbq0gctn3buU3fzK3eCY7c583gxw3dD27cCy7hwQ3fFR7c3x3eCU3eGA7cDu7hvU3hIc7b7U3ivX3hJ54T863iOWHfghEYKcAPW0kUDbAOrJDYRrjYqt3YoQ0VkT1Ync1DPo62do0Row2j4L3h5CnXlivkbb1YoH3ONlbaP%2FgC4gAHS8gPfKABw2CEL%2BAiH8gKAKAG%2FKCfMUfSrEzUuGXUlh3LtLvkk8rSigvlZEzkR67XfH0Q%2BeQArqAP%2FZEOKUAAocAPrCAO8MDVNI0L9OAKH32i%2F2muqGtOYG1Oe0autpgd5zTa5INM14dcSDC9o0R7FBEgB6FwCNPnAKV%2BCGhNAGkQCoGgOGiu1n7K1g3r1mCa6Um66cLc6cZs6WKB1yOB5B2h5wbhvvtJmyLtt5Tefb%2FOuZie6x266xAxzAtxzAoBPSfloMjqy6sc6QI90p5NaNAe7SsN7rjJnqCOuqIOc7%2B8EMFM7b3%2BEMVs7c6OzORe7gY67Q9R7Qpx7YQb7DiR59ZrpamsZ97%2Bqa0816%2BM7p%2BF6%2FnuoZvNxOLubQEv2gPPqUeH8Bir8JYr7wthyFZoEJIphSpBhQQxhff%2B8BB%2FoHJdhQsRUyePDim%2FzZ%2BuTZQs0%2F%2FdDukJL%2Bkkxux20Q21IPS18AxRSBCmIvTCoBLCIPTdoA7hMPThsBBkow7kUfXYpeQsf5jjbBFDXwvdYPQIkUzqgA1C%2FwxOEQxCL%2FVHbfN7LvNub8DDTrElv9cE76YGr2njWvXuwPcGDO8PQQzkcOeY%2B%2FNO0QctIAGJLwEeUAVnP%2FOVwAALcATbqg45sAALYAjx8AwbwAASUAuaVR3qEA%2B14AZOP%2FOj%2FwdYr%2FXmjmPqQAgzoPgS0AJxYPoHkUzucAWX7wbxEA4tsAASsAmB%2Bu%2Fge19RKAzHHwxnDxvhIAzJL%2FD9HPY%2BIQ3BEAzdUPcZL222WvXPMAndPwnCEP1i2%2FH%2F%2FSwZ3aAHjTAJa2%2BbO%2B8OXYAA7w%2F%2F738CwiCFlfD%2BQkD5M%2FD%2Bmf8MFoAAACGhljp0BQ0WLOasoLpubjZIkKaOoR0LMAgexJhR40F3YJL9AxlS5EiSJU2eRJlS5UqWLVVGAhRv40yN6sogwJkT5wxhFw0Cy0azoDsnOMvEC6cC5yR3QjWWu%2BVU6lSD7jSBaXpQ4qQgFiR83RBkUVZ3hr4e8TnVmUKM7sIRepaWas0gX8feKjdX70Z1zRwAABxY8GDChQ0DSNBMLk2CcUTotAClJ1VvtvbudSesSiqJtXBKiHtZNLooxhaPVlcqZwsybnTk7OJOXSWcQppK5CsxrboZ%2FjgNxXtmAYHA3bgTDk2F0wM2dfEWGUCQA%2Fdojh5dXseeXfv27TBlUncXJ%2BcGKFxM5Eyym5i36Rh1u4NiFGmLpbLbL7yvGyq66bjv4z9tLquw0iqcKnRCsAyC4ukDpyACnGmtjDbJAYGBqMOoNwTuygtDvfr66zARRyQsMQjdCycJBHMSYZWsnKrMQ6HU%2BWMDAzqRrRYGELAgNBmnKu1Evdz5AycVwpknHnWOgM6DbmarbR50aqkFnRetROeZUlLpBkv%2BNPwtuOEu5M8dbEqpxZxr2EpNAQQ8ECYcdQjZKZxwfuzoI%2B725LNPP1Pyjjp1hNkAJx2CiSeebo7IqRSC%2FyTqphJPugnnSome4dKe%2BBA4Khz6ENgkHmG4lM2gbk496NRuoAoH1SlraZVSjFTFcMAr3ekiJwl04GIGN%2Btj0MHiAlTHnTW1ElOCXOTSzan%2FNByLl%2F8%2BFNI9v0jElkQTp3LnitXi6KNCnHIwRyt37NPKG2LKfLS%2FUhc6d7Fi4zVInXA8wKkUJXXkMa5iT5uXWXenzSjIH9GJJw%2FlNmlunlSqqIIMOWlD4IhJZvhqBkIuUmcSHfBVQAQdKHkUTOCEI85KT5J4TIIWmqBFNi4eQyDkJLro4DMTdJDTwzz%2FBDpoobELdLTwcNpAGLJq8WCGLgZSpxaWaxahhT8ucqeUI%2F4KNaGMIOTz1KitETiBjCfVeaYFE1TwRaJSTDAhB2yI%2BQPuPJKQwIIWTjBhBuasrNuEIGq96kV1PMkpiIGUnEQ4A2ZAuEEEHhyKISrl9KnYcGqphBYv1QkG5SrrdaebWnxBOC07rRw0GC%2FRgXYeW1Y52yA777R99YJWR7vK2zNHR%2FeFrs22%2BMK2dVYWCXCCoptE1fEWJ4b529wQQ1Lp6aJndqkEHWGuD%2BcZX3y5s5bry3xmkUWUJv2ZTQzZRBj%2BgpeF5vWj3tECbMIpxRCo6x3UIiaRPYMIY3z8MV8punEljRgMT5vICQNyEAdPoMMe87gNxUQgAejkZCzu2MTyEP5EHN745mRjKtYihIOgGTwjHjnoIAIex6ScGEAEPauVdYa2Qx728B9FE407huAgBspPSWg7wYoQYIgcFQonMeTUfGpYwyPw5xnLU8BAQIgTEcwtDk3KiQ6cyBQrMQoBsQFP4QwSj1y9SRjfQcc83GCCI0gsWJN71CaCYAIFSEAFRyjFbbrRhRYsTwQ56EOlFsHHmp2gBbIoliyqoAIGWGAGZYiIlRahAhX8YRI5sIAFcmCIi2ioD2VAAQNEAIXQQI%2BTTLRXEDjpiXjUogUqqEIePCCBGbTAl5u4TTBmoIJHcox4xkMmYJAnFHeQgYuZtGIOnvCHuLjDExjLiQW6cP%2B2I%2BTNITjpAxm%2BYoduOqgWdqCZBeLwKGxwAV%2BfmUEq5hFCXW3gGfzagB0%2BJQEo9AxtT1ihBIaQi9vUxQKTeIIIW0BKmjjwR%2Bo4EIJYQ1D%2BUAwBIrBDHJyYBNnsADpB6AM6ceIGJZksWbXIjBNFEIcuiPAI7siDuCQQhDLYQUMbOEIVcJdDPfnQpz%2FlDhAvo46vIYCk7qlKF6DTAjHgQVxJUJIZJeCGmOakU59iQBX6oCKcLOKExLEmTk4wNztkMwge8MSmqiCbZxQqZUZT4%2B4%2BVYXv6MZe7pDJHR%2BUNRFCJhVuKSqCumCPP0DRAKWYRyneqROeNKewCFAKFD3RFA3%2BOW41EXHH1wxgByWFI4kIoEQtkSbCE%2FTGAHS1kuRO8KThhSiZyFwmTTKLk5cWCK%2BdcaJODHAUoq6oFG2UoU5ymxNguqMKUDRSNzaB3Hvu6Ik1jI06pKEhnaggezvAiQWgqCwIOVRG9urCCnXigbFAaTibsIc9FIaAGRCkE3GAgjTSG1G6lnCJX62FHMXqi3nMwyz5skct3OQkd8xjEeM6F550CFQGN3glQv0QNmjWBzhmJDV26EIqrtGOA1cMOO8kRH%2Bf8c6rMi9R6HgqfouFOLKRNSeGmIf8JsFFbMTDEOPyWVzR9k4mFqQbzwCyNIAcDr1KJAjQmUEcykCzMtj%2Fo8Mz2EQlmpBd9%2BXATQrIgeIkrJwyVEGEPItHkcTqhjI4kQsyoe4MxAAFEcbGHULASR46qxRQ1dK57O1ah1dbLDgjIA5wBNFrkxnbmajjNQjg7EyaaQADjGwTXH1pbw11hRygI6IIIEMnuMAiQhhihWWYRy20i4A8vE%2BE2Asv89xgOueeAH5DREALzBGPMkDHBITwmAyhIJvAVuG9CwAnAw%2FiXRkVuBZ3O09O9kwxJxXrxtFZUKgX0QVsIuAKJTXhSd0hLjdIyUpFjYM9UjFgzD5bOgf7mYPVve6RQHgu9oLBSCtspXe5wx7PmIQYduBEFaCDxfZcUFGiGDYEkPGO%2Fv0%2B6YrF6uI3nc1en5rEPMyY6DQSiD%2BqwclkrUSGDnjA4x7YgCfsITnKTYIMSXhGejeNacLuZBO0uEYfFjEpdyTrjfEo60XlGQ9CiHASLR9OKdIbvfbatwXdIMY8bkK2BfZZzvaic6j4hYD0ALkbNJvEh4cDyXodU9DZInRN2grOeWNEGJP4gzDsMScjVaqoLSCy8yIqnVCLMA%2FpbSNH%2BbcIQtgDOBrSFzo%2Bm4q1T90QFyzF8iQQp89OIh%2F2EIZwRLDAokonUUU96kaIjaHNpYLIpZsErDc0D4rB3dnj6kw5ofOra9s3TKLbNk4QkZV4CNwN4ib36aGN7gWz2%2FcN%2Fna3gIpa24PAD3PdgILjYniEebadIPABG8Sb4g5K4KQFWRKdwltMjJzrwCe0xkkVulEoC0ym4lkB3Qp7HI%2FjIgi9JF%2FQvScRByE4kQz2mHFOKqADN%2BRXIpFHIUkDtYKIB1hrMjGDHCt5NsixLzKIh1tQh1TYEQWQJ6ebM%2Bmxs646IuPCiSuwh2fzPq3wuq%2FTFsWYCg05iraoN3dIBTtIgs9CABOgPBPjD%2FbDiS5QkoSLBzfAiSdoinmQhkXgAjFqlNKhmcnCHx7JHjFhgGAQBixKAiiAgoTCiVSIh6LCQSvhqsxrINN4qG7QgeX5A5lojqsbKdKjrekzN4IQFxW4%2FoJF2JTWMynY0xBC%2BA53MKPbG7c3KTfU472e%2Br1A9Kngowpc4SLWshLPiLVNmAel4hEkQIRncwJ7gKCLYq142JQSK7jp6zCEy76w2r6cIz4EWh4VkBy0yDGLs5fPSkF3mCMVGAHiGjlh%2BadCYbSccEB1AC5d4QL%2BAEASOjQ7JMBMBDrKcYcn%2B5Kucge8MEMEQCwLhDoM5Je3codOEKsUwYkxFEHXIsESrBYrgbUguBJzKIO088UhukUnWq3ZIrXvsMEzUpJfXBweRAAfVIc8UL6vyBcjzLgcyR9%2F%2BcVguKInYrQYssKi0kZ32MKyM4jNQw1xObp4MLYV%2BgM0RADb%2F1BABFuFAXuGebCHNpLDbBMdTDSUYhGVd0IEhxkw5ymLcZFIBQNEQZTJoSFEbmExa0MYpIA1gcCGMVqGdlAEnEiCuluKeVAHc%2FgUTewCo7SHiLKNZAmGAsu%2FseK%2BNNSK15CAdyIjwrE4%2FuAqFWCt1UkO6ZnFyQEssaoCQ6DHXIyHTbiCQtIJO5RHiRAXbbSSJzCKYnw%2BZLSvo4DAsXPGeYDGpJDGHQG4g6jDx0ia3RjBbjyMsNMIV1SOZyALjDuoeXgCW3ODVJjKGWxHAowoHByU7NvBHpwHa6StRVAGMwqkZkRCfumR%2F0MZJ8SimooDO8iD3KRMhJQJhZS3mXBI0f9ImJyYATvYBDegs%2FJrB4rByJaMDhb8jElAh06gGdGcwzGJh%2FxDACighEXQkBHABhZ0kw0QIOcUgUkwhJ0Cj96byfb8k5qcCnXYlMnBTeq6gnkQEwTog2WghXiLNTkpKhXYhGe4NE2UAEIQBorIRuCwv25IBQ2hSlG8FTphkb%2FhyhehPvSYtURxB8kBlbIMgnhYhezKr4%2BUj1qYBDtAKVrQAzqrghhDGWFIkk2RDrx6Bpr5A73UpJ1IRjziBQNDGhfqsz4wymaUOsP0EYQRj4tyk12zFm50zMc0QWdZBecaghqLB2kQFwaohfEDsA8UK8%2BUM9C8wXgkTXp8AntYOub%2FkxI6%2B6tmJDx3gE2ARBlfaMZFeDxhoKpNeBLe1MLf1DwvfChzEALkygk3kA3mVEPUG7HP%2BBTmkY3rfACouTSdkIDyGlFlQ4ex5CIcWs%2BYdM9QDaqYwBCGED2Jyp4%2B4yXxmrwtyiad6BQ6y67LMrLx%2BJWLYrhRtCKaQYC1Kra4Wggzio44UMtDI0uSi4extABPSA06G6wkWCphcIZiMCMygNGa%2BYNFcJ%2BcqAJP8ISi8oCOFDNj5EvqKgNboASaSQ921IFnwAbgOlIEOMyFCB2dGIsnjVJv5JalizUouAI6MwAcBMwycB%2BaOQG3izN3DE0zRaHSrEc1tb5a0AwPUhSa%2F4ECO2iufpHNMWlE6BCBRVgFJrGh8PRT3zQqhiyI4BQNtKmC4bqodaqos1DDr%2FC%2BY1whA9iAMtglFWCOMJQARPiwvPkfndUJFJg96gms8kMHMzKAI%2FlGZmJPUZVaoiHVUu2GKxCv4WClR7GlJ5KASfoKZi2LxcoBcZoqpIABCRiBbxqXYHgUT4BBC0BOPyKrr%2BAojGCjnNC4VLQUYaAuJTqCjiQ5M4lFHvlbHYgHShChDUCBd7IAlCLMIqxUnfgDvBKzEDxGHrUvnMiAX5GAQJJMpBkuqRvPJC0jZUPEroPSfC2RKXUW6FEiAwiCs4GCDsraHrlCRhtThDmugI1HLP9anDNgtKHEuOEYNRnqFOoygAH6DIAE3syQVZ2ApdcwAAr7UwPgwoIR1IP5v0WwHkPQ1qwoB1s4nWcwlfGRH1%2BMREPoCQOCFe8ZnycJh2DwhWDYqZrzXvgphmuol27I31SgHvQ8n2KL2qk14Aer2lLNjPw1BEjKHGzwXj1wEfGpBWwYiu8BXzsZn0wyoJ4IBuuZBE%2BVLu%2B9nw4uB17ohvExXwBSOutTz%2FNzj4bg1c%2FQgUWQiDATlrK42Q3ogkIRgTdahE%2FpoBYgo9DdR3QoM504AUJoChzGox1lrx4lpPFgYv7ABmOlOjOSuuWZ16HoMEwru0BjXSl92vnJg0e9KLP%2FeZRFYZE8OAITOM95gAK4qWIrKQO4QVS0URsVcFuYgpvosoN3WgAomCMTeAJNopkFiB%2B%2BaQF%2FSZu16eNaqIucUIEeU4cngJse6xa46QNha8jtPZgyORd6KYgTbhYAyZxRbheOOeVTJp1RRga2gBdSnpd38ZkCPuBcNgn4%2FJBRtuVXXgZv4A9XrmW7YuVHUWX3SGb9gEBX9h58%2BzSUxQxgrRfgWIQ%2FwGb%2F%2BZx7ktih8AVs%2FgNfkNNakIUnAb0%2FwAM8WIQFqhdKwOZFuJNi%2BZ53Zmf%2BkAYqSV%2FLOZ2C8AVyDgds0ANsjsp6CYdr%2FgNmfQZZ6FJ7oZL3xY94KN693cYx%2FybjIXHQUsBoabBlgkgFjKbMWLmTcGAGWygX2zmVnaKV3TnpC8ZoqElptGnpgrAFZugSU3GVYa4FjCYVk5YVle7pQC3jH9mPUJ6K4yBqp0g3XVbqk%2BDlo0YHoHBqoRhq9wiC3OriC%2BULvOJQgWmP5nieYU5lY7mGX7YSDjWXrdYKYm5lu%2BKFdlCSjNDqVQagtMCGZxCGQ6u0mmhMilYm16UKYwaYtTYIdbGwYUnrtO6Prj5lYsgGw0bs%2F4BsIVHZqJ7qqN4Io7bsyMTlpV7qpj5qqM7sp4iKjGC%2FDpKAHsMTag5tg5CQ1c4IvCg2XcqtOsZXvm7doP6RGHFtjADt3f%2F%2BZNz2kMr2bcz27aTm7OMGCc8m6t72beFeiGnrgs0EbtlSbddubd8uCNj2mUmIIScotL3ma8gMbd3G7qcOivImDVB2bed2beLebeNGbs5W7lBm7t1m7xr86lC2FfS%2BbuzW7lKtBYhJS0%2BtbdsWDPHObPLG7vre7cl26vsObfd2bfiOb6We74Nh8NWGcMve7%2FLub9%2F%2B71JNlJf87tW1bQS3bAX37QxfbQc%2F6g23bAlfbQqv8Fy%2B8B9h8cyGcafucOz%2B8N0OcdcWYwMPDBSPahXf7RzPbBcn6h13ahkPbRqvcQO%2BcRlRcsoebezucd%2F%2BcdcO8tUeciJHDL%2FebSR37Sv%2Fj2omD2UnP2ooz2wpn3KprXIPQfMXz%2FLiru7V7vLV%2FvLQDnMiN3KnNvPVrvOjVvODYXOidnMO3%2Bw4D9U5x5BCX%2FM7f%2B88D%2B09D%2B0%2Bz%2Bw%2FN%2FBAP%2BpBD21JD%2BVDF2pK3%2B1Fj2o4d3T3hHTqEPVSR%2B8t321Mz2xNt2xOP3Eyd21Qz%2BxX%2FxFSl5FED2VU5%2FFGX%2FWZbPXR8PXgNvUZt%2FTMpnXLtvWoxnXCSIEUCAwHeAENEAxt53bD8HSi5nXLXnYPAXZmR290IPajVvVjl8lkF41ypw5hT%2B2u5HJZ9u8O8e1qF4wXkAdWAAwbsAZ8gIctCPiBL3hw1%2FXVHveolnfqOHcM%2F6H3H1l3om53dw9EeL%2BMhxeNiedb%2FsZ3ENf33eZ3wCAAVugHgAcAXFgHJWAFeQiBlW%2F5l4%2F520bvhndqjheNiJ%2F3Zl%2FtitdvY8f439P4vdD5vfB4rPbwkAfykRdy8A4MNZAHeAD4EMAHSAAAJeiHKdAAfDgEAJiCrT%2BehR9vy0Dvo98Lnh%2BNpMcQoP%2FDoZ%2FaotcLtJ8Ltocre591pvdypwdzqAeAF6CHMBgGgLcBfuADAPgBflCDF%2BCHOkB8fmCDwnAAt715sy9vup8Lte94n49wvY9yoYf7dZP7ucD8qbD7lX32GC%2BGdJ92pwYdEwcMB8CFSwCAwX98OQCAwpcD3f5%2F%2FDkAe1YA%2FuC3BV64heI3%2FuNH%2FuRX%2FuVP%2FliIBeaH%2FuiX%2Fltw%2Fum3%2Fuu%2FBSPIBOLH%2Fu5f%2Fuf3%2FvBH%2FuoX%2F%2FLnhSwA1dAXxEigA%2B4v%2F%2FAn%2F%2Ff3%2FviXf%2BznBUnIAvev%2F%2Bun%2F%2F23foCIdWsgwYIGDyJMeJBXpQQAHkKEGIZfoDDprE2xwY8PgB%2F81LzgV6fjRwAENKBEGSJYuZYuX8KMKXOmzGy2aOLMqbOcrWw7fwItx8RY0KI0vd0yqhQmuGLFwC2Nqg5Msn9Wr2LNqnUr165ev4INK3Ys2EiA2EVdCq5n2qVI2ypVpwmMOrhFmz61W%2FSWN71BjzmIKJjPPXn06P7hG5ZCHiQAU%2Fop0YCv8RbIgh8SaKYOHefOnj%2BDDi0atDdbo0%2BjTo0OWDbVrl%2Bji2JsM%2Bzaocvdsq0bdDFnu3%2Bjc0eVLPHixo8jR242HvDdrJvrxg3dtru57qbXduYbO%2Byk3F2raxb48kMHIc6LG6YBQCh6aoatW9%2F%2Bfbr1lxNo%2Fu66tH7Xz%2FunJhttAIomHYGn9XbgaMJVlZyDD0IY4VfLKSjafxV%2BZiCGnlUHxnUbeqYdiJ95NyI64Y1HXkShNAZACKzIY00RD5UAo4wq4jfgiPyZyNmFJgrYo4YmJtgjgxIimaSSxVHY448gDglihx%2BaKGKP6JQ4IooqCkYAAf8RafAlmGKSl%2BOVPDrZ2pVBmhgliEWaeOSSc9JZ5z9Nmvjkhm5iOOWVVvaYJYhbclmooffl1yOaearZI5sj8okhnCPKaaellyaH54h6Yhipgn72CKiJgm5I6KGnFmqmoqZdySmGj0KZ25WTSjkcprfiKpamILqqoKcHglrldoGW06OpqCIrmKomLrppo0DOJqSsPdK6YaW5YpvtVbtu2OuBvxIY7Iiijkgqhscmm%2B6yO7Ka5pWxRdvmtEQOS6mt2uKbK7cYeksguACKCyK5IJpbIbrpIrsuiM3y%2BuyIsO4574jV9nlvvhdbum%2BF%2FQL4b38BbzjwhgUreDDCpyq8IcP%2F3ToMIsSdSvxmvbU2iLHNdGqsIMf9eawfyBiKjCHJB5p8sqEpY7gyvy1v%2BHKFPetHcYXX3ly1hDkfuLN%2BUHP3c4VBVzg0gUUbzSXSFSq9MdOvxgtpzBtK%2FanFVtPtINYEav0d19h5rSDYCooNINlll5kos%2B0y%2Bq7Tvr4t6czWzl235EwCwpy70l7Z94F%2FHxh4f4MTrqzh7L6b93eLf9t4hXEDG%2Fnkr4d1N4CmY7f3dJoTyDmBnusHeugQna1g2jqvXSHq%2FqquIOvhug6781zJ3h%2Ft09kOHe4A6g4g79%2F5%2FjsAwR84fNbFK3h8x8kfuDzAzT%2Ff%2FraVt0o%2B8plb9%2Bfj%2FiMXa2L3v4NPoPh4y49A5uMZ%2Bgikvo%2Bxz33ti55%2Bpged6jXnev3JXn%2B2x539ha5%2FAPrf7AIIoAFurYAAOqDPEqhA5zHwOw5sDgSBI0H9UFA%2FFsQOBgmnwf5wUHoe7A8I9SbC%2FpDwO1Q7oQJTyJ0VAqeFv3nhd2L4nRlOp4Zlu6F%2BctjAHeqnh9xR4m%2BC2DUTEnFyRsQOEn%2FDRd0wkTtO5A4UoSNFo1HxO1ZUIRZP17ZYvcuLfANjGOs2xumUcTdnpE79QnU%2FoeVPS%2BLx3qHiyJ05HrGO3NFi7X4YtUPKrWZ9dN8foRPI6Fiya4UU1rva2Jw3nsyR2IEkGSWJHUpS%2Fy%2BU3NHj7fi4yap1sjmftM0ga5NG7KwRO6YEDioRpsrpsBKQrpwOLB8oS%2BzQ0nq2vKXNcgmcXdaml7D55XSCOZ1h%2FqaY6hrdwhDnLMXdMWJ5xGTrNElN2FnzN9iEjTZfw03oeBM64NyNOJN1TOgk05PLhE4zWfjM6UQzgtN8Z77i6ZyBJvGgERzluNjZuUQOapGMTBU5VWbOhqFTR%2BqclUXX506GSs6hupnna%2Brpmns2J5%2FN2adu%2BpmwjibtoywLKeZImrmFojRbKrUNS13jUtXAFDgyBQ5NbWNTVP2zOQHVJUSBU9CIrvOnJw2q1YZam6Kq5qipSepvlvqbptbmqf4owynadLo0nsorq0YCKldx5VXYgDU1YkUNWXdj1t2gFTZqbSRbhedWtcHVbXKNE13riqm7viavqNnrafqqm7%2FqJrCvGezRChu%2BwxIvsXj06Vy36liMQdY%2FVRWkRF1IUYGVVHsYLZVGN4ojz%2FoPtOMT7UipFdsSmva0DYXf5eJqpNeG7LcynO25amtbRInUo6Vb7W6uasbWAiehLmyscOuUWtVI9jSUXRBygabcJzLXYM59bkSiCpypXpO6urEuaxdrr%2BB2V6jETVxP41Ter52Xjekt2XrZ%2BxD3%2Fga%2B8pSvbegLSvvSLL%2B43O85%2B0up%2F%2FotwMIcMNEKbGAE70bBD%2F7lLcwgDDn8StiuFAaphaWE4c1p%2BJscHpuH2Qti3Yh4pQyujYN5id0uxlihKE7xY1e80xZb68W5C%2FJMZyy4Gj%2F3xrbJMVF3DJseZ%2FPHu9HuErlLZCR9NzXhHc14RWNZ22DWNpoFD5Qh4oBQHIJGkLgEnX8AAAcEYhiXSMFto5vT6ZL4aVrWDZd3M8Qv68vIb0Vyn5SMPSYz1cmfa%2FND%2BPAPVjzkMesQxzqmAIBD6OMS8BhGitqL2w3qFoCBZpyJKzZkRHtX0Yhl9NQcPUFIn1XSvaP0D%2B6BD0wDgA%2FyCIGXAKABeYQCAGHoBxEK5%2Be2AnpN6SwxaRn7aljPKcyoGf9zgQbtS1vDENeA1TX32uwAa1zCGsAOBbJDoQQA2GAfHCkCP8ZAngBMIx763je%2F%2B%2B3vfwP83%2BcgRsALbvCDx4MY40A4wxsejyhQw%2BESDzg7eDHxi%2FfbHde4hjsw7vF6eBnbdhNEPTyOcXcsY%2BEmvzg7CL7yidcDFGAo%2BcsdrnGO11zivGBHzh0%2BjVJfJhDi0MAwME0Aa6wDEtbQRxE0IgeSPP0Hcpj61Odwh6tjPeta3zrXu971NqDB62IfO9nvgIY2lD3tar%2BDD9C%2B9rd7Pexwn7vW0SB3utN9D20vBN%2F77ve%2FAz7wgh884Qtv%2BMMjPvGGxwIT9oB3vJ%2F98ZCX%2FNz%2F9wAGHzie8m%2B3u%2BbhfvfOp70NBeASEfAxhhBYAxfrCcF6UnCPSzgd6gB4wRZqb3tBJCL3ut8973vv%2B9%2F73g90AD7xi2%2F8RPjBD8dfPvMTgfnmQ5%2F4w48%2B9Xmf%2FOpjPxGOYEIbHOH974M%2F%2FOIfP%2FnH74fyoz%2F96vf%2B%2Bdfv%2FvdjwQqOyH71r09%2F6k%2F%2F%2Fs13RBuYMH%2F9N5%2F9ASDz5d8AHp8gjJ6KBMI%2FGAZikFoKrIcDrEMopAA%2BBAIAKEE%2FbAF5ZEY8uMMHgmAIiuAIkmAJjuDAmWAKquAKuoPCseALvqAHQpwHwmANmmDF2WAOluDG6WAPgiDIkUI9%2BKAP7twQ9uA4%2FxCDEepgPQACySlhDqbcE9ogDkohDMbczFUhDPJgFrKgOhQhF6pgPGgD0EWEDYTBGV6EEpSAPLCCBkwBP8jB0VlDCUACPriAs51JqnXQqqVOq00NGGgClZQLuX1HNgDDlcQDIMhaaNHap4BbE4lbZhEiDVHaQ6TeQ7ABPsjDrwXGFCCGPlwgHq5KtDnKtAmaH8pNIF7JmrmGISKiIloOfxmXf3mI%2FZTSJEZRJcLbC0AE7RUBmdCenfVZHpIitDxbH1abvagisVyJK%2FZIIi7ibjUisDyiGkWimuGiG%2Bki%2F5waDumhDvHh%2FCRjrSzjqGQjdDijiUBjLFbYLF5YLRrSLf8ayzZmUDdW0TdeUTieDyq2TjkOYjMe4jPCYvxcSZmFxpllxzXWBiumBmdx1DF%2BVjE%2BjCmy2jhCjj8SzDk2RzqOyDoS5DSGSzUCk0J2h0aGEz3akD3KET7SkT4SED8yD0biD0C%2BYjSqGkgCjEh2E0m%2BBkOihkOajUo%2BEktGkkuGEEyuj0wiEk0KpE3uIU5%2BjE7iE0%2B6hk%2BeBlAO4yh%2BZClC5D5aZMUoZdiY5G9wJIh4ZHEp1nHBIymt4ljWFEpOkVCuElG2klH6EFIiUFgCjlvqRlluyFnKYlrSoiDCljzqD1zCkVwiE10qk11ukbfVRqGhESAS5kz2iF9iCGC2o2D%2FvmNlmpdhKhIZfphiAhRjCpRjVhJelpBeXhRTquNAouVoDaYttuU8iqaNkaZUmSZVoWYsqaYQUWZtXmZAvqZTgiNU%2BoxUxhRVqoZVjgZWiuLhSKTLUCQy%2BtZPsebu8KVtYGaFaCaLuaOLrWVFgWZG3WaU5eZ77WZ89aYz%2FeYXZadsuWZHwmZgymZn0iYzHuZ52paU1QaVfZWVvQaW0RNkwoZkUkdw6qeJdKeCfOeRhWeSjWdhCmdoGhh0EeNWGiNyXhJ2eqZYzqdZ1udm3qd4fmiGlWepBINDXKipdSWqTWfTVKc4XudcxWcFbWdtNOiBPOiiRWijTWhypei5rGiL%2F7pohsYmdb7oUX7lH97ocoXoX44oeHKmieanOdqmkQJPeibYei5YexrUe%2B7Rk6JXlGbmlEJolUroicLYkKoXf26Uf8IGgOKVgLoGgbaUgb4GgvqSgmLpcNYkO1Jpia7plf7jfmrpgXFpiHnpiEnbkt5lk6Yim2qnmXonmvqomgIppT6amxIYnDKSnL4GnUaWnaoGnhqVnroGn26Tnx4qgxInfRpnPnKoKAXpZ1aoeSbq9ywqjjWqjoEpVklqP3Iqjlqqg2LqrP1ord0qgHlqh4Gq94jqfvxqlQXrdYlpLZGpgB0rjyYrIy6rIzYriuYqbUUrN0LqSsYo26Rrag5rTP8WK5QCalMKapoS6qYaakZmaaJOq2qQqmpda329a1LGa5nOa3HWa6beK7MWrDU%2BK42daz2261yuq%2FHMqFfWKGNt64Z1K4H0qLJqKsPmq2VaKL%2F26pRVa4AG7IMNbF42LMcerKwmLMgurLi%2B7E4%2B7JNFbEpO7GJWbPlc7Eu27GrerD7lKGzsqMd%2BqzSGKzWOa5uWa3PtbFz2bGn%2B7IGgalipqmqwqj25qr7GrIjOakvWKt8op1IxZ2o4p2hAJ4ZqZZLKaNUKa8YqY9E2WccCyMeCa8ja7MguJaKarNyq59UKUNAyKd2So91GGt72h94yLd86reKWVdqixtqGhjoUaeD%2FIql9KmnZQhPlLsjXkuyIJG3eLu1NNm1IPu2S5eyksaiW9mtq%2FCt4mWqAGG6kIu5FSu64Ma5%2BOC7qQq7q7u5lge5oWC5otK3oCG6XEu4H3e5jZqs0bayM9e53%2FO5Tpm5Orm6nRu2b7mrsosbsilntokbW6tXWpkbXvpTo%2Fi2sBqqG1mzk%2Bi2I6k%2FmqogDKMEU5G8IPITUTQGZ%2BC%2BZKO%2FmkmjnZu8IFe9Bsi%2F9ui%2B9wm9v4Wc8du%2BnFgq98QM%2F%2FMMGboE%2BrMM%2BtMgGd3CLuK10PnDcei5CJTBoCMf0Gm31csf1HucBJ%2Bf23lrr7hp%2FqgE%2BKMEL2IAGNIA1qEcg8MML%2FxBAemhAIOwDL44w6ZQwu54wdKgvUi3wXrowdsAwrcqwEJ3t5NpwufEnJKxD7bWeBQJAEWhgCYBiGWsgB57sf8ZqAZtwFkPiT4HC8GJjFU%2FHFZOtHJstDYdbF18QlB2dPogDPohDCmjESPQAP7BB7HnE02nAC0iyJOPAMXjDJWNyJmvyJnNyJ3OyM%2FCFJ4vyKJPyLTgDKaNyKmcyE%2BiCKrvyKGdDLLzyLHcyMBQDLeMyJp8DGEhCLvtyLGSDL%2BOyM9iCMNPyOezBHpyDMc%2ByLZwyM7tyLEPzK0sCGCzzNKeyU2CzKgPzNqMyYHAJAWzBFDhAEezDIcSe0zkyHGIgnf%2B58yXYAi%2FYwjzTcz3b8z3jcz7f8y3Egj778z8DtC0IREATdEHbghFkAjAY9ELrcz8z9EPbcyw4NERDNDFkgSQQA0VT9ERrNEPzAkd3dEETAx3QQUaH9EIP9EmjtEobNDFIQhaYNEsHtETLdEGDdE3nMzA0xKk4QDqwwgvoA0cQQT%2BEQQrImxqHARvbsRuXjjeg01Ln6bukWavW8QQrSOk27ulib%2FACjMxB9WtMdXdkDpSFwDBwxAvgwyFIIKapAT%2F8wFoDABu4dXQyMdw6MR9%2Froda9YFgte9qdQxzdVT68Rzvtc6GcyjwAyuIAzzwIh%2FwAy7QAy58iWPjwj24ggD%2Fb%2BnyMmrz8tDzumvuguVXV%2BXRvkZfW%2B9fY3Fgz7Boq0ZY9yRpq8bgOAAbwJkSE0AYhEIg2AcBjEFu28cSlxNnZ5Fn%2B%2BbQAicL323YSunYFuUTu9ZgO2xhT9rUJqZm%2B6pw25F1Z1n0KhRyL65ynylz16VzL9EW%2B1UKg8bxfkbyHunbcm4cq3aH2ihrqy1sq4ZpvzBq73F82yp9o4Zrj%2Fa%2Bwm4bz2nK1unK%2Bhh3b5d35xoeQ4ceNzdeW495Ey8gUyJ1pxKBj6qBlyqCb7dxw6d%2Fn4Z6fwZ%2BW7F%2BRzh%2F97GIjwaAN6d9%2FyRiZrh2%2FyeHA%2ByjkjeQ6fWCku4bL%2FfM7m38%2Fwrv%2FFIx4A44jRc4dk8ScbsniI8pi4sGiXuGiecxio%2B3hE8UdI%2BkhecihhuThlOrkr8Sk4epk2srlIeGlHcGlT%2B4lTdmjqMRhaMZepMIjF%2BljH85km%2B4mDMTmc8tvez4nzYwwjZxRc6mBPO4uX4vmPurjdOuh7MtCf6LOnwgkkfxWE1xa4L3pYo3eFR6aHDbbaBvZcl5QnK5Nnr5OOl5mBc60K56Z6hDOCzCEwyBEAzBEfwBNvDCT5ZBEARBKdD4pfNVphPIF36gvrnDq0%2B5j4c3kAPHFfg6sINGqIOGQaqwnI8gRP4VpSf7awu4kYpqsofDuKNDPEQXgI57ODw6jv9%2FzDPkAALAe7wjwAnoQVeqAAIYwCIstbBXFrH3DjYgQRIIfBJAQR78wSJgg4izeXNA%2BGvce75XJrVnyKiTl5YjrzpsQhcMfBcA%2B7OZlTtMgsDHAaSq%2BYnguarTEDoQQhCoQMvngB0k%2FGfkmDssQstDwYtK%2FGeYrzo8wwzIuwdIgLwvgrO3ALxPwr7TeWesMJp7hjoIQ9DLe7ybwCY4O3AsPHA0vGsUPQIc%2FbQ%2FizpAJNg35MV3xpCAvbJzyBbHOhREPbxXwTP4mVnFgx0YgAEEQbyWPHtndhR1wxG0PQK0wCYI4swTArznAM6T72nsvBDEexKkwjPUQhx4ALyLgDD%2BbEbHJXuyM8fWd33H6RtnIHtwaL5IqYO5U%2Fo1bIfn64jqHzfTw%2FozWMDfw7sFCD6AXP1vZL1qcH7Etwalo4MwwH23w%2Fp1CEM4JPvZc8bZg%2F0zhMNmUDrPBz86SMfzP4MwdIPvDzk%2FhUMS%2FLy8B4FoyL0dwPsR4L2dP%2BfJ%2B1OvqkM3BEG8W4AOTD68e4Dld4Y3AIPYXyXyckjhI8DhrzdAoBM4EFi2gQLVHVQ4MOFChw8FRjHWEGLFh%2Bo8IdBYxZ07dermTZKgsUy8bnHI5AnGJYcbYTM0TvJIiEyZMsK6uSHTB92iKjrIlKLorlacJDnIVLr28Q8ZMpMaqqP5lKL%2BRavo3IHR5O5q16vqnlkgWcqToSojEajoRlFdvI%2FxuDKM51Zdx7h1PcJFlw2YV78W4wECFO9v1xYx4x4s6C5YmRkWRATpEy5qODs5LLQgUytIjip1L%2BcwBGVDi0Um4%2BTw4CHIInTlbqmzrNrCiSCGPha%2B6k4TmMSF49nRiGCIJ2ybcgwndBeuu2vXfqPD27aqu7l1684TjuBIYuvTFcam6%2FZgW712yetG2MwBAPfv4ceXP58%2BgATNqqp3tx1BFWFgy9DIgCvicoccW7oJp6OoFqwrHAU%2F4mqtAgnRKIeoCEtwQYGAIWdBjyZkqMEMO1IvoolMfCieODSyIJjqjrD%2BUB1pLDAgs%2BFKgQmBSezpQ8Au1BEGAQNOiNEAjRbIgyt3FhFrOAagCCceKAwwYIaEwNpgSEOiSzGrrVIsDCwnDbGno3kMGW6RAmux44gj3JhEOumEcSPOVKo4whDKwvEpiDJc4ytM3QIbbFCHDtuxyw47EWG44Y6gTLYYBbRSASvbquJIJw34A50gHtUoiXJ4QYfSUMnI71CseuuyK3W6OUFU7OKRxlEJuljSlz6SCKIJMUrxTpg%2FnjjCDlkS%2B8POVf7485k8NOpOOnUmcSOILgjpJjF1eClqCDg9yU2dWuzc06wk8nhGVa%2FUYa%2B%2Bd%2BGd7751%2FYJVBVE9ks4dIRD%2BMOEzrDyRggURWjBWUlne7KOWKlqYgYwE%2B8ghskUScqdCBC7EqpYuJIYhiTKw%2BYgWJI5wQhg7dIjMU%2BlqeTOPbsiY4YQnoDJRInpNdCcJGRWKxw2NTggHGw9CncGcRDfxxMlI3RHGSQREmAGtE9ZyWiMRYFBAozjmKUUjCWqpaxGg11oVK61cNXuhMTVaDiF0EuVIujKejlZddyapcgZHEbAAG2l0CPUIZohRu6tCCTMcbsQWIoYWWfvOczgo2vpjuB04Hu7CeK4YboMTPOjGx8ihcBIPYrxGwIM%2BfBouFZxzblW%2FSXD0jhBCagkHq0m0fFSCP5Y0hOjhJHCjoRb%2BjkzUAEIs5y5fKIr2hKuEvKgbgSsmXOTIDUAdTgSh1Gu3vXjJh3feMDEaTiaGgimlbLzRejQIBTfRyIMNjtQoiCCqHI5Li2WkjlXw7VE5wIY7KqG1tAxpOGXoSP0Q0ALk5Q8BwFPPzQynjsAhAAqJGwiTvlaLbgxPBZ2YBMUSVYbeReojVsPYM9yRJgQoIBXzIINGhqAtkUAtZBuMA1yeoJEuePBQX0qb4hASlrZ5B3oImAFWRtc3AuagG%2FGA4HAMwJHuSaAFThJCX5BYEcQhMVHrU8gyxGA%2FT8zDHSzSSCfckRzuoGMe6JDj5jqHgA2kohulCMe9EFAme9DOicD%2BuJgKPEFHO8RhEt1AIm98ox8ZUq06%2BQLL8Ag2PKoRxUkiUIEC14QOHRHvWdHqSIA0ogJM3g2VeuSbASgHwuGcAHIISALsKiK%2B8u2SPufzEgQ3oK7yiGtoGqGBE7qHgFpYkXi9UiACTpCE3umgLRe7kDlmkDwnCAEtp6kEA4bTAifwzQLCYOZwgpAEJz3xgihSmwY10kGFAFCPOBleHMzElcMoAC0woAydnHQadRRTAatQh47iIA1hPENHpbDHdi7UjVsFS21GDONFlIgAtwmEcxq50jOGlwSc%2FAEtebDHFWeQijysghL2E4on%2BFaJI4ZxjIorY5eIwQKS1PEjPkT%2FB9%2FgiI54NA%2BPGnGCW%2BKRipEoIA%2BLWIQhtJQBW6TiUTMjxDPmgUv9yI5QqMzYRTbRAg%2FMQFu0qIAeYbgzBARBGuoYHTtHaYdN%2FHA7R4jHM3pHiIF2Lw%2FzqAVauvAMbPwsJvMYWzwdWQWyadUhuuTlY9%2Fjy5xtJ2j0AssVgrADYNgjHnKcxDyuWKZwQK4Fz7AHtHgYD2sOtAudMa09KPWHeHxTf%2BEYJFpScU4EkMEdPdJIMBm7EAy%2Bs3tfHYjPgCa04ZlxcY%2FaQNgAigCwfQSkM5QFNnonAe1KQIGEiIcwtCQBX2TEiYqz6EXXltGNClWxTsSb%2FWAIkvbewB1X%2FKx1%2FtoLhW48IxztjcNMkVhTw920cTTQCJcE4g4nbO2nGgFfDGXUUQQMESstxSIFESDTLoSqb10IIyQBDJF4tNe4DDHxfvsYhwxoJJGQW8R%2BhXGrF%2BnIrh0JTrRCArRnPKMbzQvCPNzYgmm5g1JQsMdhxduRTixWN46F7GMlqx%2FKlo0hbJnLMSpBiCr0rg8nTW5dKFUSdchCa8FUbQDjMY9u1GIRXTCBRrhgD9oG0i0EXcU5FVALj9SizMIszHDNhty%2B%2Fac83btSMRHwuoEk6lFCwJLVJPCiS1oXuzO0wKUtsIEKWOCHRNZIHlDpBiIWEW3oTa%2BT1ivhGQj6q%2B%2BFJjog%2FijeigVRuhuwNVquMGpTC1Uwuj4UgRWS0wMnTmcM5htF4yHDok6YMPX9mg50kAMd7C8HlYDLJKBAwAOHuDAg1k%2FzRNDWgzyIPGCJQxC0RMFJBAMtmbY1KN2hIy4k7sbcsYcbJWDrDayz2NejtxthIEu11AWClGyyu54MZfyEydnWZQs2aoEVOlXhzf3TyB%2B8DE3KeBoBdnALn9F6ZoxRtwuftPiE5QxOBGzCI3id4Z0hKIK1CLDPwVUIoFflDvIiwAkjat5u5yGN4SlaIIkyTe%2FWFCSxRJq6RCsoOgC5CGwIQxmVoAWPsXLYGdzLAtCtaKl3zRD1bmuDRvZqQ9yx%2F%2BRXQ1AF%2F3QHrRmw3e1SOOzH7TUZY8LZuczFHcTgFwez6g6Jtg0dkOuCmeJBqWVTWB3BEEs54fKMSdQCG7wQRioWIUJPxAFyR7C5V7ytG1lKYBWJiUcXWtAFoTyD0SpAwooR4IlaEE%2Fu2l0TQuld13trJO61D51az5B7jbRAHVpPcMGp%2FBcnJ7x8UW7yKtBiCA%2FGgwwLyEEewAJICwzBDjrCeME3TimPj6vPIs%2BYDo4kAR24YQhCTLl0%2F5Oll5%2BzsjRH6%2BcHgnOzJfMJ7jsZWjxAGNxB6DSC6JprEezhhiKIMiBN0qqLhuahiW7JHmTBA4okbOxFfvBvN8Cu7tgmkP%2ByCiQ8AS0IwR5kqO0SYh4I60rYzu1o7QqeIReEQRZqgRZsoe4OQsDUJlGw5Q980AcXgRj0AEnKoBZSof1CLo8koAxKob1GTsLoTpREZS0UkAZsIY8MqCOaKFfMi6vExOX87S2EgWgMIAnsgbBaYBPM4RpQQI%2BkAdEM4RmCoRZKoRawTkdCSah072JmQBiCQRhWQRaCQV3OLiHiYcE46Mg0AgaOj8nEBOGYr%2FkWblB0pLSQKhjIcAfeoXlYQKbsYYO%2B78s4bvxAzsysKR4I6XvUwR64wP1oSwLiz%2BUKiv5mbhVqTjf071Aab3iuJn7obEaGjiLK6Lv4hmsasOlmKLf%2FrmgHuACQVCBkhKqVAonb%2FuK8PDCj7EAOg4EQIEcEYOivhOgjBmhrMg4FoSiVTCscdKAFdgARqDHQ7s6mOExARMAWsuFUVO7TPGIM5%2FEJ84juZAmaWkCB4oAYlMZ%2BcgCQFKULI0k%2FWlGIcCIVYOBrKGEekJAM7MEeKAGcJCBY5KgL5sEeSuEEZqAKQgYP46Le7KoWOHITMpIMVCAH%2BkC39EodDCH6FBEBGBErkG8DpQMSIzFenE%2F0ZMiJFgHzGA0BNwwBdoAY6mGHKijjKmsUP678rGkemqft%2FIpvDu8VY1FLZrEn7Q%2B4cNGdMkgWRulRREAPsIRGjsQAT6BK1iQe%2F%2Fog%2FYRBSDTCF6irRhKtLgiLgfpFFqJCqexH3AzHGsPuA%2BWOeNxROpywYZzkGc%2FJHMGCbzQjmWQKBzkqHgesH9PCFryhG6DAFz1ASTgqFeQIY5Zyc9orCtXBDsSif5aQVPBmePrHAoznkbxQTLohNSXgBPIRCqxDATfADeKAgHikKIWADGTFAHLAHKQQAfJQJT2CUjagC5JgJJaHK7pHAWZAajTiBqrosHay4QzuEccnKIVyEtFHGn3xMyBMI3bACZ6my8APzDSCFK3SQuIhdZyoCnixKznyK%2BdPLG3x%2FsrSJ3ejGwgBCqBt2vLgGEpFILrBDuzEz9ChD%2BwEA0%2FCTv88oUPdABor9EIrhhKe4EG9gBZ%2B46CM6h39AjF3LUh8US0RIXHAIpmGwwRYDm%2BqRAT%2BqcI4ZTjwYBk0czMNRXFSYROUdEmXtBTs8SNSwULd4A9gCCFk4RmEwRM8YRN6wqM%2BohaU1OsSrE3sxA2CBTawYljK9A8E8MN28ws3SHBmrhZs0wAUYMUMwOPQoYkAUwT0DG7kMiXjoEqCYB%2BVJ3%2BAhE50KlRy4G60xwBUoBENIHR8cvnUsz6GssnUwQ2sRwKqQFLCoYmqRAJgwgCC4Jx8tC6EoEp%2BaMy%2B5hmGSm8%2BYimrRAECx0rQIYE0wgGdRBmvZuaoqm8w1C9y0Wym4yP%2F6gJNP%2Bg6DsI60sM8yGPvmpVZE8wj6uIanAEh3AG00IISXBT0OjAxu0EMvsApzJUMrmpFzWERguA7W6JKx8Up4kB3PghPvnMGaGYcwEgzddBY7eJf7aIgEGLv8iXBhMACPOAIpMEe1KG95AY8FAJayUNZ64JgFXQ33lRMwoEQhuBej8A1ogJhvvMIGqESnKIme6Jdv7MM%2FMwOnEIwEWITThZLnqEMcuA7dQBlpcMW8EBlc8AOyiZeycAOECIY5JVe0fNS1%2FNiF4Io4qAKrqAKyuB1KiMPpKAJphYbnEpOnmFrEcITnIpDnWoRGNCpuPQjzKIKuqAT%2BsSpusEWEMFt%2FwWibaUOLLYWOgdqbJH2L4oVvZS1SIshW8clCbZs%2BH70MMO17niBHfbOYh3CWiPEyvQiYiG3IwSlSPs17AS2ItzBDfLnBJxglPLQL%2F4WB0MvRbADWesiYpHVOaAjPbBCdQsWK6h1YCdXX2RXIRZXdiV3W%2FjORCxVaeUjU4HXWWtXW8mBGOjCLvSlRLR1dpm3eb2DYLGiRDrEeavVkqJXem3GLOuudHEwcKUjGC5FTb4VXMGkSG%2BhHIp0L%2FYVBzN31zYXIgYqNSnICdQDfMPudHHQGbK1fde3SINXeOGDeNHLG26wfedXM%2Fv2ovQ37MQXVvYmanDjomA07AK4SC%2BXX%2F85EwcX%2BCL6BAre5AiqgBLmpDAe2NT4t%2B78t33RIYNxcIAJ2D0M%2BKIQ2IU%2FuO4aOIxS2NTEl0K7wZHO90UTF4PZV4Pft%2B7i19RyuLEAFntR%2BBbad4XDroUB%2BIhjGChnuIDZEwdvWIENon13GIl6GL1%2BeFqYtisueNdgGAc3GH47uO6a2NTK2E0bUjOtWH2x2AO1eItpuIvr7ouLdI5NbYwVp47D6IxNt4jZeI%2Fr7o2VOI41N4w1E5EZcojDJI81s40Ts4%2F9uIbDSJA1k5DRy5ANx5IVR5Hrbo1NjZPDDpLDbonRi5R5WIqLlIp3TZNx0JVNTYZnGJSRSJQ9mJIZ2Hv%2Fww6VDUeV95eRW9mRXzmJY1mS5ZeYv9eWNROXTU2X646X0cuXH6sB3gWYFUeY5ZiaddiYdw2Z1UaZd42V0Yub0QuWd02WL4qWydiaTTdjc%2Fl%2F9ViAPfk9UoAVXAEXcKEIACCgCbqgAUADIEEcXMEGegmQw46cJ9mFTVlt1Nls2FmFmfmdnXnX5NnU6DmM7PmQ8XmV9Tmb%2BXmTP7qb%2F9k9poAfrGEYrEEJAGALZJqmbRoS8CEQxMEa0pOL01g3KHqaLRqd6fik626j0cudLwqeLyqk0WukkaikT1mp2zml0Uubjdifg1o%2BAkEeQgA%2BAmEdNOA9NEAeLuGm%2B8Ggh1ei%2F3etqJnYnMPuos0mo1eFqS24o5%2B6peMZmudZmue6ffF6ULB5q1d6l%2F06jLyZFehhGIYhDNzDsSFbsm2AH%2FgAAICAH9SAPpoBk1PEGwBbfr3hqEE7f7F6n6cYDEDhtNUDqsNIqi%2BKqhUHGEq7SAub4UDhjvs3sbd5il%2BaAHDBGviAFfhhCgiApvnAFfhBCS5bDgDgB%2FhhDgCgCA7hurHbFoBhu7m7u737u8E7vMHbFmJBvM37vNEbGGLhFtK7vd0bGIwgE4rhvelbvMu7vvHbu2PhvvM7v5chCyRhvvs7v2NBuwccv2%2BBvw%2F8vZeBDuhgGRa8vtc7wumbvCn8vYtBEv%2ByAMIvvL33u8PdW8FB3LxpIQHexQHaI61DAQBQHAA%2BQK2fO7r5AbpLoAhs3MaVgBayYcd5vMd9%2FMeBPMiB3BluQciN%2FMiRPBtuoRiSvMmdPBuY4BWefMqF3Bligcqx%2FMe3O8u5PBvGAcC9ocuzPBacQcyxvBjs0cynfBz2YA%2FGQc2n3BaYHM6d3Mrp3Mm9QcPf%2FM6TfMv5PMnJ%2FM%2BRvMTrowF%2BoARYfB1YgQAOPdFDIQXw4RAAQAn6YQrmgwA%2Bu31FG4dvu0glwrWj2IW5mqNb%2B4rbV7ZpSrBnma6Teop3G9QLY9Sb%2BZZfmgPkYRheIAw4O61xfQw4O7nFwQYuAR%2F%2FUkBe4NrU5HrVj3qo%2FyK3w0SvP4yvwwi2kQjVA0zV65nV%2FTa1m1qrL0rWPdqr32UL5AEf8OES2oPczR3dq3sd9AEfOtvYmf0vkj3blx23ud2MfbudpR2JqF1xrF1xaNtwrBqj892OYf0vwL2vxf1dQqAIIPo9Hj4G4EMDiuAFMPXYDziBB1nbSxmpt92Fof2R%2Bl1x%2Ft1wAt5wBl5tCv6uD143eZuF972RG96PhVrTOX6UPf6i7HpVnD1FRt68St5wTl5tUl5tVt5sWt7nX%2F6S23fhp32xkcibhVecDafeSXrnw6jnD%2BXnTSToETd9WfrUR3uqsT3rCbvpD9Pbwwjq%2Fv1d6hWH6pXW6tUG66ta65GI6wfF69UD7L9O7BWb7Ns36Vdl6bte7SuK7ZHI7U0e7jPopQmY7s3G7msb7xVH78OE73XD783GqaNe8DH37O8%2B7adY8RWH8Yne8d8J8qte420454f53isZ8dd55pt66NWm6M3m6OHxSHWe9G%2FZ9A0H9XNf9Y2V9efe9UMZ9stZ9nFQ8wuD83MO981G91eF91eF8A%2FF8Pee9nNO%2BNWG%2BKvf%2BFdF7i9V8leF8gne8g0H81ME%2Bv9C%2BkkN8LeZ%2FK%2B%2F7Gdb9Csf%2BK8Z%2FM0GIJw5Q0ewoMGDCBMqTHir3MKHECGqa%2BYAgMWLGDNq3MgRQIJm%2FuoiihxZ0JstkigjAsuWsqXCKMZCupyJrtwtmjiLDcTp0h0YTe54umwotGU2YEVTxgMEKF5SlCufkrQpdaQ7TWCCVo0ocKtIol4XTqzYsaxZjR9lhlVocu3DqG5fxoyLkCpdhDrvHvQJVK9BsH7RHQ1McGlTwujgBrYb%2BGpWxF0RA9Y79qzls2kRt0WsODBMtXoZB85LmK%2FWwJP1DiZs2CnhzqFvlsZ62m9kwqnpVr7Me2Nmwptfs0T8mbBov6Qb%2F6ytNzfd1YFbcx6%2BWHZj2pB34nYYeHfv7xZ%2FBw4eGLbe4tURo0vu17Rk7oGh%2B5UuHPHxu46Z372NGj5liuAF%2FiieX%2BT5Zd5d6Pl1313s6eXedojJpxd95VGnoHXtYUcYf34555Z3AfI2oF4F6nUgXQnGpl6D%2BC33XoRIscaUaxXah6GDGgbGYXP%2B3QViiJaNeFeJd50YV4p3LUgXi3Q92B%2BMiFFooIUqzvbYhto92R2AQIoIkmYnTaceknQpGReTcTnZYY93SXiXlCZSmeSN%2BOVoW5ZrEvZjl2UJSReRdBnpFplxmekWmm6pySOUMh5Wn3F0NmmnXjve5eFae%2FLJkZ9xARqXoGsR6pahayG6lqKWsvlcjNHNKCakiOWXnXqXhpWppmh9CVyYjxIm6lqkhmVqWKjSVWtYbtIFZ5Fy%2FpYZaZqT7ofnoluShWufuo7Ha43EzZUeYsN6VWxcx3qVbFzLBtpsoc8mGi1dlRqr6odcXtsRp2556haoYf0aVrBehbvVuG6Vu9W5bqX76bqjtnvqu3HFS%2B68mNZrr2%2FZErjtlGN6e%2BGK0zbpIoSEIbyWwvsyDKzDxELslsQFU2yrxRdnhO9a%2Bq7Fr1f%2BegXwVgJXRfBaBldlclgo66zyvyyL6%2FJaMBMts1e31nxzWDmHtfNWPW%2F1c1VBSzV0WEVLdbRXSWu9tM9ND%2Fx0WFGTPfVWVV98tVdZe7V1VV1X9bVUYT81tldlP3X2VmnrvbbXbQv9tldxEz53VXXbe%2FdW%2F3lvtbdUfUv191OBJzX4VoUndXhViWu%2BuN%2BNi%2F34VpGTPrlUlV97eVWZV7X5U50%2F9XlSoRc1elWlF3W6VKnrvrrnrQv%2BelWxEz%2F7U7XjertUuUu1e1K9J%2FV7UcELNbxUxQt1%2FFPJa7%2B8782L%2FrxU0ZM%2FfVLVa3r9U9k%2FtX1R3Rf1vVDh48n4nlI%2BnpwvKenT3%2Fq81z7hve8p8SPg%2FIpSPz7dLyn5S8r%2BhNI%2FofyPJwHEyQCTUkCcHLAoCdTgAv3XQPE9MCkRJOEEhVLBLl2wKBksygZ50kGefDAnIUvTyLQUH1bNx1W9%2BpiV9AOvIE5MTzSr2UVuKJQcCmWHOOkhTv5%2BSJMQ0mSERSkhTU4olBTqcIUebKEAX1iUGIZxhjypIZCoyBMr8gSLNNEiTbg4Ey%2FOBIxCEeNMyMgTM14RjT5UowjZKBQ3BhKOOJFjiOiIEzviBI8z0eNM%2BOgSP%2FZkiHkqmREnhERufes6V9KRE2MGRWtJESOUpIklaYJJl2jSJZxsiSdbAkieCNIlhMSJIe%2BIyC0q8ouM5IkjfQlJmlTuBXXgwwouooRAhMFa1dyCK2GZMRJtLE4dA82cQBYrUFKriFEqJcdgtcRZvahaZSkCPdYhD3m8AABh2Ic49HEJAuBTn%2Fz0Z67EOaRvMiuc7CTMLlPSS5z80iijfJM6wf6Z0Ayl8k60auZMqkaAYVjDAS%2FAhRIIIA5cOIAP%2FLABSU2KUhtgjKB%2FMqi6EHrK0aySWOZMFaNa5ShTKhGVTIzYTeXWyo6kAB%2BHsEERKvICfQQCAEXoxxZS4FSo9iMMGyFAM%2BKhjq569atgDatYxwpWd4yDGO4gq1rXulZ3EGMcaWWrXOfa1ShQg6t0zetY08oLvfpVrO64xjXi%2BtfC1gMMoMBrYQvLi3IQdrF5NStaIfvXegBCEPWgrF%2FdClfNRrYcvHisZ9kaD1CAIbOjnWtgB5tauvZVtK0VazymsU2M2AAf4hDHPYahARvwQw4A6AE%2F4OBb4P7gtwAIwQ%2BWu%2F%2FcIlgCFNCNrnSnS93qWre6mpDEdbfL3e6CQhLa9a54x%2BsDR4z3vNzNribQy97qgre98I0uKZgACFLEN76SWO992%2Fve%2FbKXFGAAg339i97%2BEni82T3weUmxhygMWMHeNTCE05vfCXvXEgXoiA30YY0QAGEfciguAIor4uMCVwmQSHGKDxHgFrv4xTCOsYxnDIYs0PjGOKaxjXPM4x6DwQdW8LGQdTzkIsM4Czs2spJ9wAQlOznJTh4ykqNsZB%2F4gMpFnjKWhQzlLeeYCVf2co%2B1LOYcd7nMM9ZChjnyAnxAAgAkvQRVnxrVMKRgH3ywKlY1EoCtuuPPgA60oAdN6EL%2BD%2FocaDW0ohfN6Lcy%2BtGQ%2FnM83GHXSUf60oZmR2gxzWlCC7bToAb0YUlRj1CHmhfsMDWox7EMVXfasph1NaeXAVdZX5odibY1pOth2lLrGtKf%2FjWkUS1sRsdDG7W9iAOs8dGjHsIB63AFAeSQUmizYtopfSmY1FPLltyyJblMyUJR0lCaPDQlwaTJMC9ZzD0e84%2FJxMkyHapRl9RtC%2FpMBzzuSe1h4OPaAKgDP%2FwdCoHarJsF5Xa78%2BixKil0qAPLqbx2esSerrOmOLoopSAuu6LGExKBuCectwAJOWjAIgQguck3hfCYKpymP7VpOftCMnQ2ikYXj3nGg%2Foyjkv%2Fz%2BOv5CZMOyXThcHc4TIvjcSfKMp0WpyiGK%2BTxqWVUaAHPTwtJ%2FrLuzX0lZFT6TQnol%2FSPZN103LhuHx3T%2BJNk3mbu94tkaSAsp6voqfs6OMEl88Ft3RWNv3mr4q6pKbexKrD8%2BpTpDvO7K40vDvr68o\
JeyhtzlOcQ13nUuc51PYuQatfPZYzmeVMup2Sb6ck3CgZN0nKPZNzo4TsLjH76NEObrXzku0zcXvr4Z4SuYMH9C4RvUtIjxLTowT1JFG9VfouNYqT8ukHrejO3Vnz%2FyRbisBvifBbQnySGH8qttcl54XHfKL%2BvfKBx%2FzgNQ%2B38b%2FR80HPfkq2n5Luj%2BT7%2FiNB%2FkiULxLWD4X36BZRyjJR0Sd40EJ4QmV4fuF73yF%2FKEF%2FUEF73tZwefdwM8d%2BkuN8EgV9MyV9mUd9YucjUfRKDkgSEEgS9icS%2BCcS%2BicS%2FBcR%2FtcSrkcSsNcSsjd8Enh84UduuOcSuvd%2F8EeCioc1jKc2jscukNce5ZeB51dxlleA6neAGAg77vdIQYh9Q4g3Rag4R9gwSeggS9hxTfh8T9iBBuguCNhzCmh9iJd4Xbd4W%2BcrFPh4eneB70R5Tph%2BSDd9WLKGInh9VpOFmLOFqtOFXleHYDeFPzeGG1iGRueB6weCk0cZwZAAbYh1b0iEcegZc4iEiBh5iig%2F%2Fxo4gBz4iGf4MGm4eX6oG5V4iR4hiLhDiMpjiEzzhS0ieec0dgKILgRohlGIhqEIQVXITHoSDIBoN7CIPbKoPrTINrYoMrioU4xIio54d5AohZKYi3%2FoiiU4Eic4EikYESsYES0YES8IETGYEjM4EjWoFL1oir%2BIisEIQ8NIb1cYiJmohZvoF%2BMIEeUIEef4EOmIEusoEu2IEjfIfTkIfrHSgy3xgzIIgCTBgL3RjSLxjSIRjhDRjw%2Fxjw8RkAsxkCRRkBFxkCSRkPW3kPm3g6vnkCkBkeookSNBkV6Sj4O4j%2BfRiV74iUoYjRM3jbxYitZ4ii2Tiu23inFBk5dhkf8RgZEqoZL3p5OHaIGJeIe66HTV2HjXCIzZKI0LOIJYaJOxiJMIIpW1yJNg6JNMh4dkqIcVaFHz2Eb1%2BHb3iIxiqYxkiSJm6YxoeYtxaYVAmTDvOJTxWJR%2FqUxzuXvFeIyWk4z4s4wK1IyM84xCpJZ%2Bx5aN6JZ0CFRd%2BZNfyZi245gYBJkqJJmsQ5mJEoaLiJnUqJmeyJl9aJXbeIlMCRFOCREa%2BRAcuRAeuRAgqRAiORIkCREmORIoGYE20pBGCTmJCYSH14a1%2BRC3%2BRZQqYJ7OZl9CY2HaY%2BBeTKDqZVE6TTLSYVISS%2BgaT2iiUOkeUamyTyoeSqqKYrdiTTfaYT%2FWymPnbmWbEib6VlF63lI7ck%2B74lTltl884k29cmF92mY%2BXmZ%2Bwmd%2FVlH%2F0lMAcpAAyou8dl5B4o4CVqICyqe29l2zRmRxWiJ%2FHmXj5mXR3Kdp5mdlRmiirmhqNOhs%2FihbjOe0DOiMVmXjYmio6mig8Ki7umiqVmg5seaQZmV9hmeNwqjPqijBCmTIqGUQRKhlTSh7FahLHShEWekTIikgimU4FmYINqgBrqArVgWBGADKoVyIfCmJUAWGvADKXAvVipLWHp2WppGXCo0GSpDo5ikrrmTsKlK5VkxxxgCuIAP%2BsAKFfED8oAP%2BMAPWwAAP5AO%2BkAPezZQ2zaoQeqj%2F3xKpPDppWIIpt4ppktKpk1qpkf6oBtxCfRQBGGAD5U6q3ygBnLwAh0lDj8QCvRQAtq2K0AaKkI6k2J1EB%2FUVX00EMqalk5KojKKPDTKjDbqODgKP1A6klIaEVXDAfLwZhoQAhUBCevwAsAKAM4GAErQD1MQrNoyrP1SrCLRDfRar%2FSKDpNGEP8TDvQaDj5YDP3ak8%2B6o9GKPtMamdXqOtcqjIc6M4B4W7gwDOvAB%2F40DPsQqaHgACWGXATQsR6rAcEAquaTp7OnHkwgrxABDkEgAifQsi1rAjRQBZ0QEt%2BjDlAgAiJgCKB6DXqAs0cgsvb2E0DrUN4QqG7BDkzBDv%2BeijUsOZNYMbRdVAyIAQ7DKRZgGVz4sA5TMAeUSgCHkFRy0A9ssLFzAABTwApom7a2wAu30LZu%2B7ZwG7dyO7dxGwuxQLd4m7d6ewt2u7d%2B67dsawSZwLZ%2Fi7e8YAsogACKu7iMqwe80LeF27a8sAMIYABiQLiFGwt6YAAGwAK8gLmRG7m8kAWSALqhe7p8e7eou7qQu7qnywt0QAem67p%2F27q0m7mqe7uFywuSkAWzq7t5a7vAu7ex8LvDK7e8UAkmuhFNdQkAAG2hgBHQ61t5BgT8oAZw5gDaq70gqw7l8L3gG77iO77kW77iKxgnYb7qu77riw62wBLsG7%2FyC77%2FJ%2Bu986u%2B6gAOLaC4FoCzOKsAiusBz2AT4etV5vtVQaC4eMAO49tVBezADsGzPmu%2FD0zB94u%2FQnvBGky%2Bt1C0G%2FzBDpEN6QvCG4y0gMDAJKzB7gu%2FKXy%2F6OANN9HCF6wOTyvDLlwMUmvD90sUOhy%2F6mCMHaEB0fa88AAJGhAI7aoB8nAJGkAPb7YF%2FaAEWXWnoUeyOLinD7G%2FCHAF5tCvhiABijsJ6iAbaSUNz4ANf3YQ6uAO2PAM4TAPCYwAfeAUf7bG6PAMz%2BBV7tANz9ANWuEMxWAO4eCv6LDGaRUUeGzHovOn71ewCHSwpZmwzrOw9NiwVHO1AHAI%2FHAIl8AP%2F0rQAOIgD2oQCvtQBAAQCvjAB9YgDifHqcK6tPEKtQihxV0wD12VVicQxmPcVYuQBB6wASLwBKVwGu5QC0kgAhswA4sQx30wD6sQBEEQB6kQBBvgAUkgDOFQBiewASqQBwRxDY0AzV2wxnkAzaUwCTlQzUcwzItMqqt5lYCXRHv4gbFZfbPJEQ5wCOkgDmNgES%2FACutgDZWaXJewDsPwAywny8FnxQqJxQtBy%2BowyN1ACGAsAb6gDn1VBYyruBLQByGhDqkgAotrAAgAxnJsD5uguBsgASStuC2QA5y7uHkQWJtrADOgDvFQBSSdA5W7uBsgDAqNDsH5FdtakrsYpv9KqqBMaq0DixIwGaU8%2BrwGZxEOMNXPGwB2GtTzx9Ap6dAKocXcrAIqINIl%2FQfuAFp%2FsLgtUAW5rLibEBQzwL9VUAUbsLh9gNKLawFQcAQA7NJVoMUtYA48q7g5gNNX4NNVIASLGwfPOtQRUbULUZwicZwoWJ3%2B2LT955JOna3CWdQPQaWYQcULDa88g7IQocUbrbgiMAlnbQttDQVv%2FAxxjQA54A6pYNKLMA%2FzsAkLoLh3ndKKawj24A48jQAm8Ax4jQAW8AzcoAeEbdj86wnz4A5xDAWNzciAaar0iapKrapMzapf6qqfJ9rax9XIyXVSocUncAQ74AEeYNIIkNv%2FlcC%2FtRAU8QDcy70ILl3IBDHbv63SeewOSaC4UMBVtQDGG8Dczk3b0I0AQWDfbkDg1%2B3O8qndCMrdHrrUCtvUJPHU2hrV6KnVD2jele3VCUHL9qAO0oANtTDbMFAO840AItANHy0MFlDSwqDfCHDTBEHdvp3cJxAOazzgCBAHBo7gCv7c8XDYCNAFThEPZSDh5Efh9vZVBVEuVl7IXhV3koWVsIydhYpRsqkbmNyjnSrPOSni6EDLTtFV89AHKo0NMe4B2FDjNy4BOa64PF7IzAzkNC7gimvk6nDgCJDgza3kTO7k%2BBrlCGDdU87hBuEO4bAKqVDpz5BW6HAs6vAM%2F5UO1OogDJ2Oop%2BeCp5QCV5OP1tOnTaS6vRsqGOelGUemmrujSQOjpa9kaadxYr7BcP9Z%2FPA6Bsg5329CbY8D2ld6N0wCQF86eqADR7w48B9An9O5IJO6Ia%2B4IW95Iqr6FAu5eKD3dy6CDPAAIvrAV1w6cfiDoaguGUQD9re5EltEPHQBdse79KK4QQxyISMEJteC7UgDLg5HGs86wpRDrbg77Ww79hIGWu8I6me5QkB8Y%2Ft2VZ7nvZjpYYMaBKfENO5EEZiyASPf1osBItgCIawCFxg0jkADrYw2y2wCcIwCWRd4M9Q1whQBd2ADfQO7Yor7UMe6Ede6EnO4O%2FO7f%2BM7ujfTuUzGeGpbdyp0FjouO4I0O5Fb%2B%2BFcQWcywVW%2F8gY%2Fukz0AIzkMcI0e03r3lRIel%2FUAsEXxe2INIMkAprjxCyohfCEAzB0CDdYPcAf8d2%2FwwL8Qx23w0f%2FpyIR0cqPgmIPwmUIAx47MfSWesZuS6fPgmLAPd8k%2BsP3fSMuwiaRgnwDd8iANTusPMyTtY8jwA%2BD%2BhFHvTXjuj1vujeLkDgHpJwrtJV4AazveO2AB%2B3DBrqzu7unuiKVRAQr8dlIAIecAa1MfAE0az3Hu%2BDDsB4TlBQzrlIrxAroQ6bENelEPcGYfA2b%2FmR2CSTIAHmLwbXEOmLYP45sOjmr%2FX%2BCSHg5p8H9g7ZER%2FrIV52hNDS%2FLsBFgAQKv64Q1fQoEFvtg4uZNjQ4cODwLI5dIfIAIIZEDU%2BjGJM3UaQBlUgIFmypAdC6srdUrdopMkcqT4WvFLSwIkjCAzksbeJpIhu6twdMWDATTx1tUhKeMZNz8UZ6uJVKdolHrp4ZYo6IRgSojswmrp61ajumQiSOYLFu9qFpAE97NAJ7VbKkzR1M90ZIlmGbU0EXdxJe9bNYLdnhQ8%2Fk4buWTBaCgsSrLUJm7twicORBRkPEKCrG5NKQGBB2MyD7txYsMBlbF7YBSV280Ay1diCsRfmNci7oe6C5Wy12LBhFWrYqHcD9%2Br%2BThMY3JzJuoNSEsQv1O4WkYSB1S2CKqEXugtC0o54jbfKSWd%2FUF0zBwDkz6df3%2F59%2FAASNFNONt4fkwJEwI7%2BEJKsPQQloggRklpAkCOPHmSok0kqtLDCTZ4haCV03OnGEDJCXCSc19SZJMQ4nhGmwtOewTC3VCr05aNuLDTHGVoq9GQuWSqs5aOkKjxOwsnCik5CdwBEQAJZQlMHGxVyIKOScj5y4wSSPEjCF4L26usvksgQRgQPZgjKHS466EAwdaRpwQMRnnGjAw%2FKIEgdT3IgTQQyzlCTkCMf9Aw0kEYr7bSGpAkmmGdy8zCVUmQh0R2JlEELgU3CMWeycIL%2BKQUv1MLpphsS0alFUtzykqaUYEpFRzhhFt1sLnWEKaWURlP1sJRaSCzwq%2BcCJXI3YSwwCZGxtCMpo3i%2BC485d5JgrQ%2F0aC2Ql%2FVy821Yh96LLz9ww7Vvv187I2QpKK64IgjSlsxlprzckTeh3ngTCkjf7u1N3gLj3XYyYryZi1%2BD3KFkhhmuUE4od8oFqSOH2ZN3YoobDu4WR9mKx%2BLxNI7XYoZfI3gyedEpxpmRGUZuZCLBEovbgqZalqFnpMIWneoCPOFHLxHwKx7AulCnBZI8weylFkjcDoEW1OGCJC423qTdktqlFmasPqu221pIM61Ad%2BwwwQQyGu6GCxX%2BFFiyhS6eWaYREdRGAM5NGv6jBWNFSGJI7UQQwQ5CZpBAghYM6codYaBAy4IW8phLuBlM2FmoTXTYgKQNZjAE3me4WFwFN8KJeLxgsXYoHjsCDCK7pZn97gp7upEFm22fqaUWbPY1VZaglLNF07xs99V09%2BAT93hxyW0vnnMR2KCbedhqHoE%2FrvKwFkMMqeUYYgyyvRZ0hFmkV2FqmRGdUrSnVXxKNEztmVIISaUb8cLxpRJaPPTEkBln6uZ2YRQsHKsghCc0NDqHQIx4GuHQAjVyMgd%2BxUhYc4cTSCKY3RTkFuzgy5LKYIjyIOAIUungz4JmjzKQxA32KAUDllL%2Fi3kA5gz2%2BI5V0BFCD%2FThDzkoydVgNqit%2FaZrhypQVooChaskQUAGOEIxGnERmywChQKygEx6hhYoImABk2hYMIgWIMEI53IISEU8PGEsARnOLDMQ0BNEFxLnQCeCuQkHG0VIGgn8aDKt8w5JqhCHtIkACrW40xVa0AJAzSUccZiBBRRggiPcZi7CYIEKoCCMJIiAASooQ1Ac6C3khRI%2FymMP8zBXs7nQhiR5QIohVNAuCXhADJNJggQs0IXaLMAQOojlJEIogScIowtoFMHmDOKG2jSIEDCSwAKS0IdLSaAKotPO4HIwmU7kQG4b6MIbOaPAOTKkgeFkCATJOZ4J%2FsIsHC%2Fxi0PUkxOf5cMe5sBSHudRQjAFxh6eIIkOwmaSzRGNAamg4QXnMUQESHEe0jABSXzILSAWaohfY0hWSAKFeZSiQZ6ohR3kVolVDKFdOjiCLFLRLij8AZ46wEoHEaACO7hhjM8KYQv6UIZ2TaIdtkhmKuaRszLUohQhXJ07AHOCPKyGJAOBY%2Bnm6A6fLEkWX2xnh%2FjYLJIYK4si4Fl5DHCeJ%2B1AQBLoQ8NqobYNeCCLBqiCsIgESlHGdT6klI4pnQe9eMxjakvtiYCWKi94mqQUbFSABLLovADlUSgpFJAdGpaKrArIDfLiozvOKKAkmAOBCwHnOS%2Fm2YWY%2FxO0HUont9QRwraOp2G8wAaWEACFMsT2JZOwBz6BZtBuLO4ZSpRbFYbougvaY2kn8ORQHBpEBEVUNBNF1EIs%2Blp7TIIkAglGSyaRClt4wxyXWkX0qnBRe9hjaLa5Z5aCMQ97AKYK8zip84SRj3ykDjw77Wk8dHBRSiDmD6wyy%2BUkkAr4ShcBq2uqHJ%2BaMyHMgwwkIe5HlIWRPi4rDl1o1wiNOyCkKHFJSSiDay2winggFAFXsIMdN4BK4sFVrnGlK2fsKoEyxGHCY1RALeLhhIsEYROb4CECkgDYkhwBCkdAhx0lEIdOaBgBIliEIZLZh4OikQydwOmh4gHZBi1iEv4vyYFQ%2BFhkkhxhE4QY4yLcmsAIjXacoxUtaF125rp%2BFyMLM8QipMHaSxWlKG8hRG2%2FdNvAbEzOeRhJEHg4AzeQ5AxsqaE9GISAG8wkHolGwEOHpdyyMLeIjMWoL6hGuC4YjRjZyC1JSkGQHg8hpiVepZ8R0GWsMDYH7hCwCGQcB8C0ABw8JS8ZsriBIOThGRvjp%2FPcIGMyoBXFGokjnCVklmRKEaFmturMsLrkZ8xjHvK1wFrgaYeDyo2V8XjGF50Q4naRIR72aG%2BNNysdFa84lC32z%2FT8SoaPrMgOz7CHOxh7BCC%2FOi%2BGsWMS0EuJkig0hDyJA0mCEF57yPkP7P5dik%2Ft0TwaeHlZliWJCcIR3g5CwdmcTTNo1wzaNnv2zRTMQ1aD0RWz7EkP4LhUErrAhS6EqAuLKK%2FP8mkVWi%2BLNHZIoQWwtACZXLsLws0S7ToET0sTCdMQMRRFnctppOQBjSYJQnZLjYBTf10ne9YJ7DoI6werQB1KGvueDbABbPCajO54RghN0gEoF7vtUGTKZps9x%2F9gThjmqCNJhODgqzrrKv0t2jy%2BbQ8lqeCN8ehDg9Dh6SWdmvGKXWC85X08envFrgLygBt481g7DOEEcgP4hY8yFzBTb2MClkB1T%2BtQewiBwVDgvR27QPG5nensGsdIzzzAeyiEUPLfLP%2B5Z9XBC4%2B5R2NIMV3Kz7lymKkD8yKkXxJLogd19NgO8nRHHhaBKtsGDSliJ6PeEdBgpR%2B0XRM%2F6BijLqGpP6TqzT3Ic0WuDnuQkxwYI50QA3L4ulNbp2WpAt5TlyowhJ5DOwFrmg7aAOSrgiuoAjLYtZ6SClqDgrQpiRPTqNKAAgbEwCroAk%2FaiL%2Bbox6TgBM4ARVAI8V6MOAascVDQMczD3toOB87nKWRAGEQBq%2Bpmc3ToxQzns%2BbN%2F5YnuY5sj%2Fogz4wIJgTBh7aMzRqvW8TDzsys6BjGtG5vUqbh%2Ft6Cz3TiRy4sizBi57pMhvsmb3TiROYFa%2ForOubhCZwQC7%2FmoxJwMAMnIR3CwnrIyfsgxnVKIkZIIM4KMMBs4V2oDQLWIRn8EF7Sr8Lsh45e7%2FMIMDUUrqrKEMYswPXqjTkWh6tkagijJ7pcwf%2FC7FFsAOee4ZNCKEdOEDuih54IoN8iB5DmARfIJHh65AJNBEGA0B7qIVF%2BBTh6MBJQIROMhWtKxrMM43wEh8D2hSQaMHOKwWq8Su%2FsMEIu4IcvBRP2MEB6UGHk7Th6hSvOY0jDESy8LwlBJfQCwm7eh5V5JiCCKEcyANZoDQtNA8uJAkvnMAwDCEoC6EjyAM7sIM86APzcwcs8wA2HL437KATaEiHhEhDkA47JCcjeguuoCUo%2FzKAOChF9hjEcCpE01IHwBAQFRAGbCm3qimJsomHDlI3mQm0aiOJH1MHsSKJPYyHp0GAqFGHVNg6knAhUsSa%2FOMaPLqCEJlKMoBATqOhixCB%2BemGnGkCW1QhRBCG5tmARfiQpfAEV5NAy5OGZOIC2%2FmiJzgHuUuFcBCBouACbKgLY1GA2yjDIxCGZxCCi8gBOmQ2p1ogNFkKD1jMxUSjE5CGeEi8BukGVtyrPIqHx6M9GJKXnAkCd9C0d%2Bw8JZzH5GnCUhrLZeuNZ9hLXwivfwu48zCILpQXg8wLhLQHSksCiJMxSZTINRQKi2wdqFrD8JoENzAEWfDI5gNJSvuJ3v95hmQSSKxRyacqrexDhzi4lKXYEndQD3cIhh7LKnzrEERgjclyh2GyADuZJBGYFnmJA9ZogeIiA9b4AoLYJ8uxgL8pw%2FsTlFNcrm40CSaaoteaB2FIJgnYABqsBG9whyGwiUlAhy9yHrUxgCRoqWVxMAGTvCQpCQuApVJgh7mcBx90ng1olyQQCkqApa3bw2w8TNOBtjDpBmmQhm0oBj0oiT6TzIsqHzu6pgs7D2y4lBmYhFJYMJKAQNB8Bv9CwhgdTdKkR9OsK9Tsl9VUoWdYhEsJSAyTTYKkzQY5SIeaB1lol6BqHgMgBOCjSOBMC%2BKLinCAgTArBUowgSOCR3T%2F%2BMhwmrQAMZrhNInYdBSK%2BQ2KWRh3uIZrGNTrs04KwoYL%2BZGPUA%2FYKwUL4T%2FEUAx0uFTD8J7E2NRLdbqCQIzIaBPkTAVG6YbcWyWUrKv%2FzLQTHRxYhVUowM3BaSt3KIXw%2FIlFWIZsqKaSmLhaeNCqqQLa2YvB0QENHZwZ2Iwkic6X4iLhOIHBkSRkCpAhQKW%2BMQkPYKoCGzmJcanbgI1rKIYfBcdry6p22SJ5EdbzgMMAgYK8WNK9dFKskccoHZcpdbE%2FuIi%2BcwhGJMAlox%2FdM0nx%2BKKCnC4x3YmN6YLD8skOwbINqMgMfbDuoLUARQATSM2HWc49bU6B5FNADQ3E%2F7GDJLA5T9iWvEiFMyjZMlgFkEmFP8ADSpiEJ6gCQFzUl%2FmkQjUISRVUfdQWeGEO4EgO91CHbCAGuhujJzAMT7gUSvBWe2xVjQiHWFkUq7XamlEURpkM9MmeXtQQBUHK7JmERsmLTvBamfCfRQmgUF3bgsnSsb2MV7GFqp0Vumuy7EkF2JsMF8me3pwOGK1X3RuwhXCGa0idwooRa0NSMpjQDTCcp1NVq5rQ0uimeCWNDXBH6FwSes0%2BKL3X%2B6jHbFwEyYEBjc0NX7A7gcgBGSyFqRgbbkUHIRgbLoKqsQmCMISCsVGjRWqorFLBeI1BM%2FGysUlRWhsbIhPGFpAbCf%2FQAZdVTjzFP0qTVhGyzSVxrUCVqQB5AlRSh27IxKUog7kISQ8gDQOANUJk1HPq2dHKBmCYCyUTgRBcMrxwSqkti%2BTIX3z5l5CxGAUZGJbZ2XrhX%2F4V4JUQWgF2jwTu1gi6nVpITWdwhv%2B5HWmY4GCYi%2B8RFUP4gz8QhrEonwfWixrhYEPw4JkIh0q4nVkJBwcuzHr9XNCtD9EFCVEZFapDh1VIhflxh2ywBVJBhxouzBrGxkz94YII4twgNx02VX3sBltgBoMwh1GZFSk24g4JhyUGn%2BjNU44FPEobAqI5MWyojRYIoXaVryWJTtzNiyuAIgsgQMEAWZtgJZyFWpj%2FYV%2FQct%2B5wAa7g6IW2IQthoinJKf%2FVTOMGa0OCdx6ZQ50iGBr2V%2BgjZeNWRgEZoufRQdeIOBALhQYjuG5yld4%2B5duiQ1vIAbk6BdKpuTlYGR1GLWifeWiZWSy0FMvvqic2QQBqwILGhADRaMkqIVuYCwEyIN50LsuAMyc%2Ba95aM4g8AQ7qK46RmR0wGPP0mNF8oQ4cANtngTKJJ5BDqdCNrlDHi1tBC1HlmZqJid79WT9AOVzohdpDmfQouUIAtkqUJJsJglC2GU7gLyfuAypeIJ%2BUjA35Q07KgPcFLxJVjn1Jad0JidrHphV3GRBvt9zkudzOrnrU2RyOmdEfug5%2F1pnT57hCIJnRMboc6JnBwJZKJCFBUAAHeChPNKwfpYvgIuZDpqBCvqSmMnNhH4pb2LonB0tkJ6jiAatb54jlA4njSZEjg4njybqbAEtkY5hknYgkx6tpQ4nlV4gkHUCdMASBVAbFUAHmrYHmwbCjQOq0ABZ3ZzeFRRqO%2BaWoo6go%2FaspI6grY6gpl7Jp56jqAatuhbNb2FnGXZncspq0NrrCOpqb%2FZpJUMAJzDHfm45CPuIZV6WnTwCkRXWWaW0jEBklvSswV6guz6nvHYgxl6gvn6qv46gwCbtqXa%2BTmbnq14gxfas1V4gxzYdt7YHy%2Barb5uHVRA3oViFZEJoJf%2BJRNpsF0P4aSQS7YYOp9ImntMGSYsm5IlA5NaOoHL2rNhe39k%2Bp6oG3dsmnty%2B6O1G5N52ytzMqJIYKMyUzsHFiCAYoxPI2i9iAB3gpbQIB5ae65aZ7jmqbtO57j3NbnBeb3GW5u8%2Bp%2FB26PFW59oeacQOp%2FTWbmnmYoquK61gonj4ujmMhyAoipP0XrsTwbrpkFWg3GX5ESOyUAFHEgKPIAPHGgQHPAVXagb3rO52oAfvaGfY8Bs3rQq36gufowxf8A1vb0NsBCSAgj7ICzvgvTzIizzgvT1Uh3D4gyBQARVIxFx4DWywgxwAc0QrrkWoAiTAgxl%2FkNEWb2nO8Xr%2F3nG97vGMHmc3e20HinDqnvBwKu97PW%2FTWXIeb%2FIuDmno0wtLngy2WBkuZ9b%2BEAog3gzqcxREdfAad6Ai5xY6X2k7V208J6cfR0w%2BXyA%2FL3BAD%2BkjN%2B8kL%2BkD0epRJycnh5lSXyDq9O5NX6BOH5ZP9%2BpQX6DdNp1bN50gh%2BohR%2BdVjyCRdoAfePZnTwH5eIEt%2BAH6oHZrH6VXx%2BpYX%2BxZ5%2BpE52s9R7lkJ%2BddJ55eJ5Jf9%2BZgJ55hx5pip6BTJ55Ut%2FFl%2F6QK%2FwF%2F4Ad%2BwId%2BOAQAUIJ7uAd9CAT5mIKBL3ht73D2MPQ7R3SG54x4n85yd7NzN510l5B19%2B12N513%2F7f1cd9oAxuteuf0eyfs%2FNAAJVCCIggFerABArAGawiBQ9CHF4j5mYcEfHiB0N123O523f72Oap1bpl4mMl1IL94rMn4B9l4%2ByWUkxZ6BzL6YTl2wK54wT75JCzs%2FAgBeJADAEgBfAD4IuiHLQgBfDB4JTD7%2ByCAZnjzB%2FGG941ngZHmjoD79qD6YSl54gELUMD79mB6BHH6H%2Bp4rPn4og95QgSFkTdnrCdtB291ALgEcYiPHuCHOQCAy1cDG%2BAHsP8BzweAF5gC0if9LaCFCE591V991m9913f9YoiF15992q99Z4iFk7F93d99JniFbNh94Kd92Q9%2B4m99W7CF4v9P%2FtTPhiyQhN9X%2FuQffugv%2FmLghekv%2FmygAzp4%2FusHfl7I%2Fe4HfukPf9vPBknIAu4n%2F9o%2FfvXf%2FfFv%2F9fPBlpIgHARezWQD9AH%2B86Xg%2F0HgPwHCAA%2F%2BBAkGKgYsmIKFzJs6PAhRIfAYkWsaPFisVi2MHLsWMxIJo8iK1IcabIhr1snVxZblkXSMpYnYwGTadJWSZsel9GhE1OnR41APU4c2nGZpCw%2FjV7kxYspx5xQIyKjlQAA1qxaAajBlwJrDH58BPIL80IsgCL8xmzN2swdurhy59Kta%2FduXW%2FA8PLt6xcdMG9%2FBxNGF8UY3MKK795a7LiuM2ePJ6NzBwZUYsr%2Bi2%2BV0%2Bw4217PiuMBAhRPtOLAqAuXa7x6sDtQYDK%2F7hu59mDXuPm6a%2Bag7VZW1ghg1QAvFIAw%2FX44kIdcORDgCZqp293Xmy3rfYFl0873cHXvdVuLv1tMcnm6ljXRTo%2BOs%2Fu5oOPLJW2aflzu%2BNGRx%2B9O02z73bYffPSp4xtwWTmwDnJZHbLPJesM89sh%2BlwCz4TSUbcfdvsB1t1%2B4OHXH37n7bdee%2BkVSN98%2BNl3Gn76jahbfP8FiN%2BA%2BK3o3oG%2FJQiAA5BsoZUDfAxzyVdAGolkgtOFR1%2BH%2B8mIn4j0kUifif6BwR6BneHXIn0vSgmilTS6Z2OK5eVI347p9fj%2BI5xxavhkfFHGSCZ9VcZ3ZXxZ0odil%2FuBGZ%2BYd%2B7HZ3poCoiejl7G96ackcbpJIfZjemhnu4hmp6fNW6Zpnhtpjeoe4XSN%2BWeZiYKIKjerRmfqOJBKimtbVGKn52n4hlfpultWl6nZ34a6JehhVkajLoeqmp5iuLIKJuO8ohgrdVmdSuUlhoaojF0%2BsossNAKy2WjghpLKLKXzngiq4t6GKt3s1pbK7Z1aqsst96W96t4wSY6bLnF7mdqfKhqCq53ztL3qnvwaifvvJLW616uBe%2FqXq%2F7Iuydv80CHK25A6e7bZns3riwuA1L6ya1EdM6cXoVu2cwxt2uu1%2FH4gH%2FGjCL55Y6Mr4l%2B9fus%2B%2BuXB7ELk%2B6Ia73WoypzUKXmLLH5IIssItAP33zn0SjbDR%2BSSv9I8zlyZwezellLB6%2FHFOt88ewHl0eqekRPPPFGpvcqnYMqzh3vC2PvbS%2BZjuNN9SFe9e2djknHLfKIWd9H8mp7u0usY8KPjjZTGfrYdrlrb34xo2%2F%2FbjVckt%2BLOVBWz70yfH5XZ7D1onN%2BVZli3d2eaGLN7p2jFvnuHY7X92zyK1vLXWNXst%2Bune173Y77td6bi%2FoeYse9etTnwj536ujqzziXDcfu3uzhwr4w5tXn%2Fv1FB%2BOtva%2Fc3%2Bwh8RbZ7zqWLOe7PK6dz6%2BWUd9%2FtFjn%2B3c9z7rKc47vBOP77wDPOsIbzf62w3%2FIue%2F8QGwfMw7k%2FPSBz3tSA831Huf7hw4v97VT4L3%2B1b%2BRohB8NEOgdapW3nuRr9lXa5omZuWjxZoq%2FjFbIUQbKF2JribCuLmgrjJYPg2%2BDPy7dB8IERfegxIQhuaUIFCTKF2HuidCCbxhXrDmQyfSMP1iW%2BKHaziB1eFRTWlETclrM0JqwdG64hRO2S0jhJxw8TaOLE2UKxhG%2B2mNQ8K8IoE3I0WrXPH1%2BQRd3vcTR%2Bt88fdBLI2g3xNIV9zSDZKUZFUZCEPYfdI3ERyN5NcTSU5d0ncZHI3m8RNJ1%2FzydWEcjWj%2FjxgInO4SDg2Uo6rrE0r7chFPHpxgbOsTS1xc8va5HI1u0RNL1Hzyy0GUzw6RKUVjYk5ngFRiHOqVPYSF05O1VGUawRmKYV5yiOmsmtzFE8ya%2FNK1MRycM98TTRrM83XVBM11xRNNkWzTUkuszY49OYwwRnHZoUwi%2B18zT5F08%2Bx%2FXM1AX3NQFdTUNEc1DMJ9cxCXdnQ1zzUO9%2Bk5zp1VlE6gs1AzUQhEQ2XznzFtF8X1eY7uRlPiM5zjEhcYukwOFN8%2FhQ1GfXMRpXWUdR8dDUhRc1IPVNSzZxUMylVZjddGlGYTlSm93RVU0XzVM1E1WVTFU1VUXNV0WRVM1ul%2F0xXKfNVfa50NS3VzkuNWs8BjvN45TQn%2FBoYRiMKlqdl9en3UqdB5E3ujRItJkXP2re0ematlGlrxN7qmbiKZq6eqStl7jqZvE5mrxjtK2r%2Bap3A%2BvGogkzqE5eK1ppqLoiIxYpoNUNaz5hWM6idjGofw9rHuHY1nqWMbHdDW03a1pO4NaRuN8vbw%2F4WuDndHWNrq87Hui2yx3xtWAE71saSd3%2FZLSBnNfPcx4B2XsGlzHA1U1zKHPcxyXXMch3TXKfCVjTRxc10bVldXV5XlO%2BFZHwpM1%2FH1Nda951Mfimz38n01zH%2FXUyAFzNgtRbYMweuTYKluWBrNtiXD2ZlhP4nM%2BHFVLhaF35Mhiez4cd0eDEfVkyIFTPizpZYMyd%2BTYoFumKDtlibL0ZmjB8zY8VQLwWXuPKVh5QCSFw5FD8AUiCOlKQhKpaP4aXueDEbLvP%2B0D1HXk2SQbpkkjZZoU9%2BTT7Ra1PfbsUG4vjzOv4xlin0Ix3iWIcSAFChCGWIzOhUF5XMyLY6IzTKIg4qQ9M72%2FWKt6fFu%2FNq8uzcIk%2FmhAQggANYkSE%2ByCMExAGABpyTnH4UATgE%2BK4KdxrpMt82hmwmp5t9ZkrLklXNCQM1akRN4LDdFCtT0MeXARAK57Ai0TZAi1rSACQNcJvbJWjGPNwh7nGTu9zmPje6zf7tDV6ku93ufrc7iOENeNO73u5gAjXiYe99o1sdvFAHvwNe7mVEQ%2BAGd0c9wCAKfR884LwoR8MDzg1iRJzf9ShNPSq%2Bb2JwQ%2BP2Lge7yw1wj587HqIAQ8ZJDu9rXMPjI3%2B3v1%2B%2Bb5nbex7NJoA1GoTzdEBiGPoowrXlQBahT4EVRj%2B6OVrxiVGM4hNOf%2FonVHGKpbei6U5XRSumDnWot0IVXof6Kbw%2BC1pInelWP8UpRuF1prci62k3%2Byfargq1Nx3rbm97062uClrM4utPP4Xcrb71q6tdFVdvO%2BLRXnWnmz3sWtjE1AUP9a%2BPAu1PH0XXB%2F90rPud8VI%2FBS3ezv50xqfd61NPvNnr3vXCO73tis%2F60q9OC7Ib%2FvKAX7zmo856qiP%2B7mlfutlb0QZGKF3ym5%2F7JyzP%2BMznnvOdVzvaQz%2F30S%2B99Gu3u%2BibDvi5h731d8%2B83sfe%2Berjnfpb97rfMd97xf8%2B9a0YxCCKr%2Fm1Jx%2F5S8e68Tff9eejfe99F331Md31uV7qJR%2FedV%2FUud3tUV%2Fl0R7UVR4BNh%2F6ed76bV%2FeBd8gaIH8DR7dUZ3VqR3uceD%2B1V71hR0lUELZUd%2FbDaDbwZ36CeDhfR%2FcJZ%2F0bd3t%2FZ7mFR7ygWDvQeAHsl2zqUWiYUUIaAAAlAA9XELQDR1waAArdNeP2AAkQP5hghxCtFHhVoSCEWIhkTwhF2qFGoTBF2qFFY5hVmihGQrEIaRhcohhGpahGYZAg5ihDYxFGm7BkKQhK%2FAZFrLCFv7IIcDDFhJAChjhgoRCCuBDIACAEvRDHm5FqrGhFLIhJFzhGKKhGUZiGoYhG8KhGWLiGP7AGqZhGLihGXriF8ohG4oiG4aBGrDhHurhH9raMOBCVoSAPLBCCEwBP8gBzlnDlnlFE3ohHU5hGlYiG4LiF2qiGXLiG1riF4ZCCKQhK5KiKY4hKnKhKlLjKJphKaYhAcSiGfohnDSHMWJFV8gDPsSiEtADPuiDHbaFE0riOY4hMqahMnIhM46hM%2F%2BeIjRyoTRyYyte4xdmIxZuoxlWozcSJBaGIx9SITn%2BCAHYwJhhxQtsQRG8GgCkwBb8Y1bMYxpO4jF6JBXmIxbu4xf2IzaSJBQGZEJ24xh%2B4zOmIUKGIkx%2BoUyOoUPKIhZqACxI4iVQIkt2V0SOoQbY4ia%2B4kjC4jSaYRHUY0oqpRne4xiGADGGIlRyoRpI5RcSAC48JBTCwix2lw2woQOUZRq%2BwFhyoQ1o5BiiZRw2JR2uJRa2ZRo6wAuwYQjI5Ri%2BAFh210Tq5RSs4lD%2BFly%2BpVv%2BlgbYAF8C5l7u5atpwA80JucwZlZM5GFiZmIOTgj0wKsRwF5qgKsR4Q98wPv%2FnKUNBNFEroBWTGRevk8K%2FEAJKMhjjiYAhMAP0KW1pEAPzGIJ5KZW%2FKZuRsxZviYRhqaPFKcQEcBkZkUKpKZW8OZfusxz3uJjJidFnmZtOid0cud0SooDbCeQPOYfvkB34o5mfmQPzKZ6ViTn4KZcimZoZoV5bmbEgGZt%2Bshi8qVkUma1NEBthsBv4GcRRmZzCtEPpIM%2ByANDmpMS3AM%2BvGOiFcE6LOgjco4S9CJWOEAovGMo%2FAaHeuh31ooD4MI6%2BMgWRGiEftkUyIM%2BIBruvIA1RKg15KUT6gM%2BXMJv3GiONgDnEEAgRCg9CB1XqOg95OUWuOg6RIfLAGmEikOt%2FyUHPeiDOERbGExpleLOD4hDhB4CcWgAl%2BIDPyxiCPgcPnjp%2B8iBP7ihHNwDlaKlHLyjONTA%2B4TAOgzHRq5DhGpoClgDjsbj4ByCiqbDb%2FDBOwIjVhiqPiCq0kCCiorDbzjqk%2F5GkOrDMLiny4QALkQoOfqZPtCDUnoqqFaPGqijPAymtEWopZ6ao%2BoDLpjm4BTBPkSoOo7FD1SoPOThrVqo0mQoreLDHDCiO0poWuDqhf7oMFQpK7QaFRoqH6iBHKTAL%2F6AiQ4niY4BPWhocpTFFvDDK4ZBWYArVyrNC%2BACP0AqVhyCPMgBtApoOgzDDyTriEbKpirBFOADcsgBP%2F9sgRo4IgDoK7%2F6a6z%2BAyTYQCjoQ15GiBywgRxwWy5u6TDYp6T8QD%2FwgZ8Nw206B8RmrJeJQ8RyDi6kQw8EQj8k2g%2FoAyRAa60JqhLwAT9EaWVmqxi%2BQI7e6hPS7CXY7PtcQj%2FgqRLowyGoQR182SXQQxEcAj8cZpMOgzVAqxpMJD8cQhEkIQBcm9RSbZNawzBA6xicmtZyLXOOaRHgQ1ZGzCXggxKk6JCY6A%2Bc7VewrdtyTg%2FsQ8EOQ8Q6gDjgArSKYYbOwbMt4uCkgByw66ZmZLL%2BwLJqAAEc7rL6p6QILuHiw5fVAT48a7ROa7XCpiICAKENYXeFAjA2ZViMxRb%2F0BrnbIGF4AORhsKJEoA4PCHrOgABpMNVugze2i26AgAuXGpT%2FgA%2FaBsbJO3gEEAY5KHW6q44AIk8BCUuiAOqLS%2FnvAAfTGPp1towsEIJbGEjDmYgIKzLSCZxMC3n9sNgCmoIbK%2BiCePgvEBeToE%2FJFoY4EMRJAnOYWwiAu7gNECy4oMYKketXYI8OEDpRgcAw%2BrgJKk44Gmc%2FkCSLMgThgWRjk2sHUIKQABW6GtZssI6EAAGA4AGz2uC4GIgpICPiDAJJ%2Bo%2B5KUr5K7SxFpQimZ43sMUFoEjaoAMp4XAjk2QknARbqTqnnD6TiPTSuy8aMA6jEUK6MMidm4JKPH4%2F3pupq7D6oauRe4D6Zpu9fguG6SFt0Kh6%2BKDOkICAdAw3%2FZDg1qLDdjAC%2BiD0C0unlqDNTjAELsxEdMKASiBA0TIb2CAnqqjlxLaYG6BP6Aq7qgFH9QvADRA3jrA8eItUqInLghirIFx5c5arfUrzEZMCgyDPNRa8H4ZBqcBP4DyKFcPHyQhcUACP6jjpRoHcsTaHI4NH4jDvYqhy8YAAHRvCvDBPpRlIKQw56SAPKgB6BJHKKwyPrxqCNxwIpattfiuPNwDgwKAo36Fo4aAoFozPrDnvAABMsPDkHizOoIzNd%2FDNBat49YKze7uEQNADVhx1fbiC8DztQGqy0wb6%2F%2FiQvsiM4yGgiB68DpYa7VAAqECgDe%2FolqEwbUhdBePzSWgK85RshgnNCPmMOfQ8Cv6bgQjVpAEgg2QLEaacUWf8bzMcxvDcfjG8RADANOCcKTELqxdgsUeQskCMgAIMiEPzg%2FIgzVogCLbousOQwTkbSJrbR3XCgFcQlncZijIgRSOMrjWWhpgscsYbDvr65cFbw%2BoQSmzwXKYst3mpRzk7L1eAizD2nFwzg8YbQrsw5AEAj%2FkJS9Lr%2FfCtdLOSzjCrjUkasFuwT4cQgmQ7UbSgzNXi8FugQ1sagg46mwKaglAwj1oM6bSCuIiNid3ZihYdqsB8DRe8%2BDYAD6swxT%2FAOzoxjMfnMVY2AA8D84xQ4ISJPAYh8IU%2FIA1BLQGG%2BG0CTStJCKRqkVG%2Fy7FMvQWK80K4INSdnQdOiIZczFJz4tG43BzL5AGEDbFlvGxkus%2BEOkcGzUuDEf9HnWtwHR0KiL6li4UK81Oi8NXIDLeukIDNDJR%2FyjPbjRWBF31AsAnc44c9IMNgGt06OsLKAcRAEAdCG%2F1nLVWNG8KMEjGBuXYeCU8yIGgssIPdHD3loCF44NxukyGXoIc1PbTagXTCvMUJuJNHvD77nA5a0A2UzM9pHOtmLdWhIE%2FHC0%2BnLM86LacrHFQzu4lrPEiXhsbJPEi9oC2OrT3Bu%2BG77cN%2F1yIEbrCieIOG6iv78IBFyM2P2zxcisN5XLzR1L371b0dStNYE%2Bh%2F0JhCARCrZl4YC8iVxemOmc3VgCwBjhAWtO5nccya0d5CpThtdXBWQgdH3jv%2Bt7pmGkwAdjwFCK6Bgg25yCtVL7AIeQlEJhxdaevl1dLEVzCbIbBPxQBDQ8JJNCDBoS6i8M4eAYtkKwDLnCwUra0%2BKL28JooPMiDO8JB50rbibpvorGujsfJFsDDOtQ6PlhDCdSBGAa1IwtEP4xrxBytEY7BcoDrlzUvAfRrtbOwtShBIBghthdBt%2BM3f3N1Wa60BLP6qps19HZucwSlTQ%2BOy4LyPqQAtxcqP%2F%2BswKB%2FhTU88uC4wsf68Boqx2SeqSWPze7eopoDfJtzBT%2F0wAKFAj3UQQK7dMQYxzqoASvgg8O7wrpOfPXEQD8QaYer8mCOPD%2Fk9J7%2FRgrcgzikAS7QwwssrhSzOnjLSTj2gziEgiusYbdy2cveND%2F4fCZzOD%2BsIyvggg2swKKOgTXAg4D%2BmRzImsv4Li7IwTqIQ50ncB3cwwtrPdf%2FKC7Ao1KL4THzAdIKnb4GQsZvuO3WuVr4op0Og6FOYQhgyNz%2FaLc1r%2BLiQnarshjCNR%2FggjxM9rb%2FAyuowZ02QArQAy647CIufuOPqdJMwT%2BEAuJHLOVbvoQQwDoDPu7A9SH%2BkDwAnC0f1LYRkr7pRy89WIPVt7qnX0KpPqEN6EMoQDru2LmDA0AAsMKQejzvy4HHf688nKMRX3zGfxnHA38cL1AIPDTS1yUr5O0QpkAovC7bj00K4MIjMr01sMEAYEUawDEb1DytBMKHYsUPrDAuROkLVD8ico4T4oL8D8MUcjAcu6H9W0N004oa4IIrAAQuXMN%2BACiCSxyrHgAA2GAl7lIIhhMpVrQ4ccowcaFeMLThCqLEhiAjXjR5kmEISOKsqSEAQMMhlnJeNggkbtgUlDtNpsClhOEPhJA0MAQytChPpRMDXUq5suUAAA5kDgO6lOcWjZdSMFSi8ZADr2CtxWK9GGZrVwBoIZYYKy5QWbMmHQSyZm0MQw0rcRWEydfvXJMHIXYloMaaOEgitYrj81LwRQ2swlAMcUmcKxspMWuOTJEDri0UHYr7ybBEqIQdP%2B%2FUALn13NcVZ8dW6iDpRNy2lQbgAFsvb6Ua5OotLvwigdwMlSNvTvH5xOjIYR4nTvs4dejLAUzXjh289t3bK3pvPV43d%2FTUr1OsPfG9c%2FXzv5uMDxP49%2Fu1AwIAOw%3D%3D";
var provMapCoords = {imgWidth:710, imgHeight:708, mapWidth:670, mapHeight:670, leftMargin:31, topMargin:19};  

var GlobalOptions = {
  ptupdate : true,
  ptupdatebeta : 0,
};
    
var Options = {
  includeCity	: true,
  includeMarching:true,
  includeTraining:false,
  includeTrainingTotal:false,
  encRemaining : true,
  maxIdlePop   : false,
  srcSortBy    : 'level',
  srcMinLevel  : 1,
  srcMaxLevel  : 7,
  wildType     : 1,
  unownedOnly  : true,
  fixTower     : true,
  fixTower2    : true,
  fixMapDistance: true,
  fixMsgCount  : true,
  fixWarnZero  : true,
  fixPageNav   : true,
  enhanceViewMembers : true,
  enhanceARpts : true,
  allowAlterAR : true,
  enhanceMsging : true,
  ptWinIsOpen  : false,
  ptWinDrag    : false,
  ptWinPos     : {},
  enableFoodWarn : true,
  foodWarnHours : 24,
  lastVersion : null,
  hideOnGoto : true,
  currentTab : false,
  gmtClock : true,
  chatEnhance : true,
  chatglobal : true,
  chatwhisper : true,
  chatbold : false,
  chatAttack : true,
  chatLeaders : true,
  fixKnightSelect : true,
  attackCityPicker : true,
  mapCoordsTop : true,
  dispBattleRounds : true,
  reportDeleteButton : true,
  overviewFontSize : 12,
  overviewAllowOverflow : false,
  curOverTab : 'A',
  curMarchTab : 'N',
  curOptTab : 'U',
  playersNoCities : false,
  enableWhisperAlert : true,
  enableTowerAlert : true,
  OverViewShowExtra : 'maximum',
  alertConfig  : {aChat:false, aPrefix:'** I\'m being attacked! **', scouting:false, wilds:false, minTroops:10000, spamLimit:10 },
  alertinterval : 10,
  celltext     : {atext:false, provider:0, num1:"000", num2:"000", num3:"0000"},
  rptType:'alliance',
  arAttacker:'Them',
  arTarget:'Them',
  arPageFrom : 1,
  arPageTo : 5,
  TournoiLigne : 25,
  Xrenfort:0,
  Yrenfort:0,
  AttackHorloge:"21:00:00",
  AttackGoHorloge:null,
  AttackOnOff:false,
  AttackUnits : {},
  AttackFav : {0:{0:"200K miliciens",1:0,2:2e5,3:0,4:0,5:0,6:0,7:0,8:0,9:0,10:0,11:0,12:0,13:0},1:{0:"200K dada",1:0,2:0,3:0,4:0,5:0,6:0,7:2e5,8:0,9:0,10:0,11:0,12:0,13:0}},
  AttackFromCity : 0,
  AttackCibleX : 0,
  AttackCibleY : 0,
  AttackKnight : 0,
  enhancedinbox : true,
};

var Colors ={
	DarkRow        : '#eee',
	ButtonSelected : '#444444',
    ChatLeaders    : '#B8B8B8',
    ChatGlobal     : '#CCCCFF',
    OverviewDarkRow : '#f0f0f0',
	ChatAll        : '#99ccff',
	ChatAtt        : '#FF4D4D',
	ChatWhisper    : '#FF4D4D',
	ChatVC         : '#00ff00',
	ChatChancy     : '#F8E151',
	Opacity        : '0.9',

};

var AutoTrainOptions = {
	intervalSecs:		60,
	doTraps:			{1:false,2:false,3:false,4:false,5:false,6:false,7:false,8:false},
	doCalrops:			{1:false,2:false,3:false,4:false,5:false,6:false,7:false,8:false},
	doSpikes:			{1:false,2:false,3:false,4:false,5:false,6:false,7:false,8:false},
	doXbows:			{1:false,2:false,3:false,4:false,5:false,6:false,7:false,8:false},
	troopType:			{1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0},
	keepFood:				{1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0},
	keepWood:				{1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0},
	keepStone:			{1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0},
	keepOre:				{1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0},
};

var JSON;if(!JSON){JSON={};}(function(){"use strict";function f(n){return n<10?'0'+n:n;}if(typeof Date.prototype.toJSON!=='function'){Date.prototype.toJSON=function(key){return isFinite(this.valueOf())?this.getUTCFullYear()+'-'+f(this.getUTCMonth()+1)+'-'+f(this.getUTCDate())+'T'+f(this.getUTCHours())+':'+f(this.getUTCMinutes())+':'+f(this.getUTCSeconds())+'Z':null;};String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(key){return this.valueOf();};}var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,escapable=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,gap,indent,meta={'\b':'\\b','\t':'\\t','\n':'\\n','\f':'\\f','\r':'\\r','"':'\\"','\\':'\\\\'},rep;function quote(string){escapable.lastIndex=0;return escapable.test(string)?'"'+string.replace(escapable,function(a){var c=meta[a];return typeof c==='string'?c:'\\u'+('0000'+a.charCodeAt(0).toString(16)).slice(-4);})+'"':'"'+string+'"';}function str(key,holder){var i,k,v,length,mind=gap,partial,value=holder[key];if(value&&typeof value==='object'&&typeof value.toJSON==='function'){value=value.toJSON(key);}if(typeof rep==='function'){value=rep.call(holder,key,value);}switch(typeof value){case'string':return quote(value);case'number':return isFinite(value)?String(value):'null';case'boolean':case'null':return String(value);case'object':if(!value){return'null';}gap+=indent;partial=[];if(Object.prototype.toString.apply(value)==='[object Array]'){length=value.length;for(i=0;i<length;i+=1){partial[i]=str(i,value)||'null';}v=partial.length===0?'[]':gap?'[\n'+gap+partial.join(',\n'+gap)+'\n'+mind+']':'['+partial.join(',')+']';gap=mind;return v;}if(rep&&typeof rep==='object'){length=rep.length;for(i=0;i<length;i+=1){k=rep[i];if(typeof k==='string'){v=str(k,value);if(v){partial.push(quote(k)+(gap?': ':':')+v);}}}}else{for(k in value){if(Object.hasOwnProperty.call(value,k)){v=str(k,value);if(v){partial.push(quote(k)+(gap?': ':':')+v);}}}}v=partial.length===0?'{}':gap?'{\n'+gap+partial.join(',\n'+gap)+'\n'+mind+'}':'{'+partial.join(',')+'}';gap=mind;return v;}}if(typeof JSON.stringify!=='function'){JSON.stringify=function(value,replacer,space){var i;gap='';indent='';if(typeof space==='number'){for(i=0;i<space;i+=1){indent+=' ';}}else if(typeof space==='string'){indent=space;}rep=replacer;if(replacer&&typeof replacer!=='function'&&(typeof replacer!=='object'||typeof replacer.length!=='number')){throw new Error('JSON.stringify');}return str('',{'':value});};}if(typeof JSON.parse!=='function'){JSON.parse=function(text,reviver){var j;function walk(holder,key){var k,v,value=holder[key];if(value&&typeof value==='object'){for(k in value){if(Object.hasOwnProperty.call(value,k)){v=walk(value,k);if(v!==undefined){value[k]=v;}else{delete value[k];}}}}return reviver.call(holder,key,value);}text=String(text);cx.lastIndex=0;if(cx.test(text)){text=text.replace(cx,function(a){return'\\u'+('0000'+a.charCodeAt(0).toString(16)).slice(-4);});}if(/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,'@').replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,']').replace(/(?:^|:|,)(?:\s*\[)+/g,''))){j=eval('('+text+')');return typeof reviver==='function'?walk({'':j},''):j;}throw new SyntaxError('JSON.parse');};}}());
var JSON2 = JSON; 

var Cities = {};
var Seed = unsafeWindow.seed;
var Tabs = {};
var currentName = 'Overview';
var mainPop;
var CPopUpTopClass = 'ptPopTop';
var KOCversion = null;
var ptStartupTimer = null;
var uW = unsafeWindow;
var ResetColors = false;

function ptStartup (){
  clearTimeout (ptStartupTimer);
  if (uW.ptLoaded)
    return;
  var metc = getClientCoords(document.getElementById('main_engagement_tabs'));
  if (metc.width==null || metc.width==0){
    ptStartupTimer = setTimeout (ptStartup, 1000);
    return;
  }
  KOCversion = anticd.getKOCversion();
  logit ("KofC client version: "+ KOCversion);
  
  readOptions();
  readGlobalOptions();
  readColors();
   readAutoTrainOptions();
	if (AutoTrainOptions.intervalSecs < 60)
		AutoTrainOptions.intervalSecs = 60;
	saveAutoTrainOptions();

//logit ('g_timeoff: '+ uW.g_timeoff);
  Seed = uW.seed;
  var gmstyles = '\
	.ptcastleBut {outline:0px; margin-left:0px; margin-right:0px; width:24px; height:26px; font-size:12px; font-weight:bold;}\
    .ptcastleBut:hover {background-image:url("'+ URL_CASTLE_BUT_SEL +'")}\
    .ptcastleButNon {background-image:url("'+ URL_CASTLE_BUT +'")}\
    .ptcastleButSel {background-image:url("'+ URL_CASTLE_BUT_SEL +'")}\
  ';
  
  var styles = '.xtab {padding-right: 5px; border:none; background:none; white-space:nowrap}\
    .xtabBR {padding-right: 5px; border:none; background:none;}\
    div.ptDiv {background-color:'+Colors.OverviewDarkRow+';}\
    table.ptTab tr td {border:none; background:none; white-space:nowrap;}\
    table.ptTabPad tr td {border:none; background:none; white-space:nowrap; padding: 2px 4px 2px 4px;}\
    table.ptTabBR tr td {border:none; background:none;}\
    table.ptTabLined tr td {border:1px none none solid none;}\
    table.ptTabOverview tr td {border-left:1px solid #ccc; white-space:nowrap; padding: 1px; background-color:'+Colors.OverviewDarkRow+';}\
    table.ptTabPad tr td.ptentry {background-color:#FFEECC ; padding-left: 8px;}\
    table.ptNoPad tr td {border:none; background:none; white-space:nowrap; padding:0px}\
    table.ptPlayers tr td {background-color:none; padding-left:5px; padding-right:5px;}\
    .ptOddrow {background-color:'+Colors.DarkRow+'}\
    .ptstat {border:1px solid; border-color:#000000; font-weight:bold; padding-top:2px; padding-bottom:2px; text-align:center; color:#ffffff; background-color:#6FA2FF;  -moz-border-radius:5px;}\
    .ptStatLight {color:#ddd}\
    .ptentry {padding: 7px; white-space:nowrap;}\
    .ptErrText {font-weight:bold; color:#600000}\
     button::-moz-focus-inner, input[type="submit"]::-moz-focus-inner { border: none; }\
    .ptChatAttack {color: #000; font-weight:bold; background-color:'+Colors.ChatAtt+'; }\
    .ptChatWhisper {font-weight:bold; color: '+Colors.ChatWhisper+';}\
    .ptChatAlliance {background-color: '+Colors.ChatAll+';}\
	.ptChatScripter {color:#A56631; font-weight:bold; background-color:'+Colors.ChatLeaders+';}\
    .ptChatGlobal {background-color:'+Colors.ChatGlobal+';}\
    .ptChatBold {font-weight:bold}\
    .ptChatGlobalAll {font-weight:bold;background-color:'+Colors.ChatGlobal+';}\
    .ptChatIcon {border: 1px inset black}\
    .ptChatCHAN {color:#000; background-color:'+Colors.ChatChancy+';}\
    .ptChatVICE {color:#000; background-color:'+Colors.ChatVC+';}\
	.ptChatOFFI {color:#000; background-color:'+Colors.ChatLeaders+';}\
    span.whiteOnRed {padding-left:3px; padding-right:3px; background-color:#700; color:white; font-weight:bold}\
    span.boldRed {color:#800; font-weight:bold}\
    span.boldDarkRed {color:#600; font-weight:bold}\
    a.ptButton20 {color:#ffff80}\
    hr.ptThin {padding:0px; margin:0px}\
    input.pbSubtab {cursor:pointer; width:10em; margin-right:15px;}\
    input.pbSubtabSel {background-color:'+Colors.ButtonSelected+'; color:white; font-weight:bold; cursor:none !important}\
    table.ptMainTab {empty-cells: show;  margin-left: 5px;  margin-top: 4px; padding: 1px;  padding-left:30px; }\
    table.ptMainTab tr td a {color:inherit }\
    table.ptMainTab tr td   {height:60%; empty-cells:show; padding: 0px 4px 0px 4px;  margin-top:5px; white-space:nowrap; border: 1px solid; border-style: none none solid none; -moz-border-radius:5px; }\
    table.ptMainTab tr td.spacer {padding: 0px 1.5px;}\
    table.ptMainTab tr td.sel {font-weight:bold; font-size:13px; border: 1px solid #000000; background: -moz-linear-gradient(top, #cfeef7 0%, #73cee7 24%, #0aaad6 44%, #53c2e1 79%, #88d5ea 100%);}\
    table.ptMainTab tr td.notSel {font-weight:bold; font-size:13px; color: #ffffff; border: 1px solid #000000; background: -moz-linear-gradient(top, #cfeef7 0%, #73cee7 24%, #0aaad6 44%, #53c2e1 79%, #88d5ea 100%);}\
    tr.ptPopTop td { background-color:transparent; border:none; height: 21px;  padding:0px; }\
    tr.ptretry_ptPopTop td { background-color:#a00; color:#fff; border:none; height: 21px; padding:0px; }\
    input.ptButCancel {background-color:#a00; font-weight:bold; color:#fff}\
    .CPopMain { border:1px solid #000000; -moz-box-shadow:inset 0px 0px 10px #6a6a6a; -moz-border-radius-bottomright: 20px; -moz-border-radius-bottomleft: 20px;}\
    .CPopup  {border:5px ridge #666; opacity:'+Colors.Opacity+'; -moz-border-radius:25px; -moz-box-shadow: 1px 1px 5px #000000;}';
      
  logit ("* KOCpowerTools v"+ Version +" Loaded");
  
  
if (TEST_WIDE){
  // max cityname len = 15?
  for(i=0; i<Seed.cities.length; i++){
    Seed.cities[i][1] = Seed.cities[i][1] + 'LONGERNAMETEST';
    Seed.cities[i][1] = Seed.cities[i][1].substr(0,15);
  }
  var numToAdd = TEST_WIDE_CITIES - Seed.cities.length; 
  while (numToAdd-- > 0){
    var cityId = Math.random() * 1234567;
    Seed.cities.push (Seed.cities[0]);
  }    
}
  setCities();

// TODO: Make sure WinPos is visible on-screen ?
  if (Options.ptWinPos==null || Options.ptWinPos.x==null|| Options.ptWinPos.x=='' || isNaN(Options.ptWinPos.x)){
//logit ( 'Options.ptWinPos: '+ inspect (Options.ptWinPos, 5, 1)); 
    var c = getClientCoords (document.getElementById('main_engagement_tabs'));
    Options.ptWinPos.x = c.x+4;
    Options.ptWinPos.y = c.y+c.height;
    saveOptions ();
  }
  mainPop = new CPopup ('ptmain', Options.ptWinPos.x, Options.ptWinPos.y, 750,800, Options.ptWinDrag, 
      function (){
        tabManager.hideTab();
        Options.ptWinIsOpen=false; 
        saveOptions();
      });

  GM_addStyle (gmstyles);  
  mainPop.getMainDiv().innerHTML = '<STYLE>'+ styles +'</style>';
  FoodAlerts.init();
  TowerAlerts.init();
  MapDistanceFix.init ();
  WarnZeroAttack.init ();
  AllianceReports.init ();
  messageNav.init();
  PageNavigator.init ();
  ChatStuff.init ();
  AttackDialog.init();
  battleReports.init ();
  CoordBox.init ();
  GMTclock.init ();
  tabManager.init (mainPop.getMainDiv());
  
  AudioManager.init();
  DispReport.init();
  AllianceReportsCheck.init();
  mapinfoFix.init();
  
  if (Options.ptWinIsOpen){
    mainPop.show (true);
    tabManager.showTab();
  }
  window.addEventListener('unload', onUnload, false);
  
  if (Options.fixTower)
    TowerAlerts.enableFixTarget(true);
  if (Options.fixTower2)
    TowerAlerts.enableFixFalseReports(true);
  
  AddMainTabLink('TOOLS', eventHideShow, mouseMainTab);
//TestSomething.init ();  
//setInterval (function(){logit (inspect (getClientCoords (mainPop.getMainDiv()), 3, 1))}, 2000);  

  uW.ptLoaded = true;
}


function onUnload (){
  Options.ptWinPos = mainPop.getLocation();
  saveOptions();
  if (!ResetColors) saveColors();
}


var knightRoles = [
  ['Foreman', 'politics', 'Pol'],
  ['Marshall', 'combat', 'Com'],
  ['Alchemystic', 'intelligence', 'Int'],
  ['Steward', 'resourcefulness', 'Res'],
];


var CoordBox = {
  init : function (){
    var t = CoordBox;
    t.boxDiv = searchDOM (document.getElementById('maparea_map'), 'node.className=="mod_coord"', 3, false);
    t.setEnable (Options.mapCoordsTop);
  },
  setEnable : function (tf){
    var t = CoordBox;
    if (t.boxDiv == null)
      return;
    if (tf)
      t.boxDiv.style.zIndex = '100000';
    else
      t.boxDiv.style.zIndex = '10011';
  }, 
  isAvailable : function (){
    var t = CoordBox;
    return !(t.boxDiv==null);
  }, 
};





var TestSomething = {
  init : function (){
    t = TestSomething;
return;    
    var ft = uW.modal_messages.toString().replace (/}\s*$/, 'TESTmyHook(); }');
//    logit ('FT: modal_messages = '+ ft);
    uW.TESTmyHook = t.hook;
/***
var scr = document.createElement('script');   
scr.innerHTML = 'modal_messages = '+ ft;
document.body.appendChild(scr);
setTimeout ( function (){document.body.removeChild(scr);}, 500);
***/
//with (unsafeWindow){
//  eval ('uW.modal_messages = '+ ft);
//  eval ('modal_messages = function (){alert("xxx")}');
logit ("WITH");
  uW.modal_messages = eval ('function (){alert("xxx")}');
logit ("EVALED");
//}
setTimeout ( function(){
  var ft=uW.modal_messages.toString(); 
  logit('uW.modal_messages:\n'+ ft.substr(ft.length-500));
}, 100);
  },
  
  hook : function (){
    logit ('TestSomething.hook');
    logit ('tvuid: '+ tvuid);    
    logit ('uW.tvuid: '+ uW.tvuid);    
  }, 
  
}

var battleReports = {
  init : function (){
    var t = battleReports; 
//    t.getReportDisplayFunc = new CalterUwFunc ('getReportDisplay', [['return K.join("")', 'var themsg=K.join(""); themsg=getReportDisplay_hook(themsg, arguments[1]); return themsg']]); //Alliance report battle rounds function
    t.getReportDisplayFunc = new CalterUwFunc ('getReportDisplay', [['return K.join("")', 'var themsg=K.join(""); themsg=getReportDisplay_hook(themsg, arguments[1]); themsg=getReportDisplay_hookz(themsg, arguments[1]); return themsg']]); //Alliance report battle rounds function
    uW.getReportDisplay_hook = t.hook;
    uW.getReportDisplay_hookz = t.hookz;
    t.getReportDisplayFunc.setEnable (true);
    t.renderBattleReportFunc = new CalterUwFunc ('Messages.viewMarchReport', [['$("modal_msg_list").innerHTML = cm.MarchReportController.getMarchReport(m, r);','var msg = cm.MarchReportController.getMarchReport(m, r); $("modal_msg_list").innerHTML = renderBattleReport_hook(msg,m,r);']]); //March reports battle rounds function
    uW.renderBattleReport_hook = t.hook2;
    t.renderBattleReportFunc.setEnable (true);
    uW.deleteAreport = t.e_deleteReport;
    uW.MoreReport = t.e_MoreReport;
    uW.PostReport = t.e_PostReport;
  },


  isRoundsAvailable : function (){
    var t = battleReports; 
    return t.getReportDisplayFunc.isAvailable() || t.renderBattleReportFunc.isAvailable();
  },
  
  e_deleteReport : function (rptid){
    var t = battleReports; 
    t.ajaxDeleteMyReport (rptid);
  },
  
  e_MoreReport : function (rptid,side){
    var t = battleReports; 
    alert('WIP ;)');
  },
  
  e_PostReport : function (rptid){
      var msg = 'Report No: ' + rptid; 
      sendChat ("/a "+  msg);
  },
  
  SendChat:function(name,mess) {
    	var inp=document.getElementById('mod_comm_input');
    	inp.value="@"+name+' '+mess;
    	unsafeWindow.Chat.sendChat();
  },
      
  ajaxDeleteMyReport : function (rptid, isUnread, side, isCityReport, notify){
    var params = uW.Object.clone(uW.g_ajaxparams);
    params.s0rids = rptid;
    params.s1rids = '';
    params.cityrids = '';
    new MyAjaxRequest(uW.g_ajaxpath + "ajax/deleteCheckedReports.php" + uW.g_ajaxsuffix, {
      method: "post",
      parameters: params,
      onSuccess: function (rslt) {
        if (rslt.ok && isUnread){
          uW.seed.newReportCount = parseInt(seed.newReportCount) - 1;
          uW.messages_notify_bug()
        }    
        if (notify)
          notify (rslt.errorMsg);
      },
      onFailure: function () {
        if (notify)
          notify ('AJAX ERROR');
      },
    });
  },
  
  hookz : function (msg, rslt) {
    msg = msg.replace (/(\bReport\sNo\:\s([0-9]+))/g, '<a onclick=\'ptChatReportClicked($2,0)\'>$1</a>');
  return msg;
  },

  hook2 : function (msg, args, rslt){
	//alert('hook2 '+rslt);
    if (rslt.rnds && Options.dispBattleRounds){
      msg = msg.replace (/<\/ul>.*\s*<\/div>.*\s*<div class="unitsContainer">/im, '<li><span class=\'label\'>Rounds: </span><span class=\'value\'>'+ rslt.rnds +'</span></li></ul></div><div class="unitsContainer">');
    }
	if (Options.reportDeleteButton){
		msg = msg.replace(/Reports<\/span><\/a>/im, 'Reports</span></a><a class=\'button20\' onclick=\'PostReport('+args[0]+',false)\'><span>Post To Chat</span></a>'); //Post to Chat button
		msg = msg.replace(/Reports<\/span><\/a>/im, 'Reports</span></a><a class=\'button20\' onclick=\'MoreReport('+args[0]+','+args[1]+',false)\'><span>More</span></a>'); //More button
		msg = msg.replace(/Reports<\/span><\/a>/im, 'Reports</span></a><a class=\'button20\' onclick=\'deleteAreport('+args[0]+',false)\'><span>'+uW.g_js_strings.commonstr.deletetx+'</span></a>'); //Delete button
	}
    return msg;
  },
  hook : function (msg, rslt){
	//alert('hook '+rslt);
    if (rslt.rnds && Options.dispBattleRounds){
      msg = msg.replace (/(Attackers <span.*?)<\/div>/im, '$1<BR>Rounds: '+ rslt.rnds +'</div>');
    }
    return msg;
  },
}

var mapinfoFix = {
	init : function(){
		var t = mapinfoFix;
		t.calcButtonInfo = new CalterUwFunc ('cm.ContextMenuMapController.prototype.calcButtonInfo', [['case "reassign":b.text = g_js_strings.commonstr.reassign;b.color = "blue";b.action = function () {modal_attack(2, e.tile.x, e.tile.y);};d.push(b);break;', 'case "reassign":b.text = g_js_strings.commonstr.reassign;b.color = "blue";b.action = function () {modal_attack(5, e.tile.x, e.tile.y);};d.push(b);break;']]);
		t.MapContextMenus = new CalterUwFunc ('cm.ContextMenuMapController.prototype.calcCityType', [['return c', 'c = calcCityTypeFix(c,d);return c']]);
		t.calcButtonInfo.setEnable(Options.mapInfo);
		t.MapContextMenus.setEnable(Options.mapInfo2);
		uW.cm.ContextMenuMapController.prototype.MapContextMenus.City["2"] = ["profile", "throne", "transport", "reinforce", "reassign", "reinforcements", "message", "bookmark"];
		uW.calcCityTypeFix = t.calcCityType_hook;
		// logit(uW.cm.ContextMenuMapController.prototype.MapContextMenus.City["3"]);
		// logit(uW.cm.ContextMenuMapController.prototype.calcCityType);
	},
	setEnable : function(tf){
		var t = mapinfoFix;
		t.calcButtonInfo.setEnable(tf);
	},
	setEnable2 : function(tf){
		var t = mapinfoFix;
		t.MapContextMenus.setEnable(tf);
	},
	calcCityType_hook : function (c,d){
		if(Cities.byID[d.city.id] && c != 1)
			c = uW.cm.CITY_STATUS.MY_CITY_AND_NOT_CURRENT_CITY;
		return c;
	},
	isAvailable : function(){
		var t = mapinfoFix;
		return t.calcButtonInfo.isAvailable;
	},
	isAvailable2 : function(){
		var t = mapinfoFix;
		return t.MapContextMenus.isAvailable;
	},
	
}

var anticd = {
  isInited : false,
  KOCversion : '?',
  
  init: function (){
    if (this.isInited)
      return this.KOCversion;
    uW.cm.cheatDetector.detect = eval ('function a (){}');
    var scripts = document.getElementsByTagName('script');
    for (var i=0; i<scripts.length; i++){
      if (scripts[i].src.indexOf('camelotmain') >=0){
        break; 
      }
    }
    if (i<scripts.length){
      var m = scripts[i].src.match (/camelotmain-(.*).js/);  
      if (m)
        this.KOCversion = m[1];
    }
    this.isInited = true;
    // more coming soon :) 
  },
  
  getKOCversion : function (){
    return this.KOCversion;
  },
}
anticd.init ();



/***
<img src='http://cdn1.kingdomsofcamelot.com/fb/e2/src/img/avatars/25/m16.jpg'/>
<div class='content'>
  <div class='info'> 
    <a  class='nm' onclick='Chat.viewProfile(this,9640194,false);return false;'>Lord Sasuke_of_leaf</a>
    <span class='time'>17:17</span>
  </div>
  <div class='clearfix'>
    <div class='tx'>
      if ur really bored try it
    </div>
  </div>
</div>


<img src="http://cdn1.kingdomsofcamelot.com/fb/e2/src/img/avatars/25/f9.jpg">
<div class="content">
  <div class="info">
    <a class="nm" onclick="Chat.viewProfile(this,3813948,false);return false;">Lady Aerwyn</a>
    <b style="color: rgb(165, 102, 49); font-size: 9px;"> says to the alliance:</b> 
    <span class="time">17:32</span>
  </div>
  <div class="clearfix">
    <div class="tx">
      ok, heading out to dinner with family... be back laters
    </div>
  </div>
</div>


WHISPER (chatDivContentHook) .....

<img src='http://cdn1.kingdomsofcamelot.com/fb/e2/src/img/avatars/25/m1.jpg'/>
<div class='content'>
  <div class='info'>
    <a  class='nm' onclick='Chat.viewProfile(this,2282354,false);return false;'>Lord Jetson</a>
    <b style='color:#A56631;font-size:9px;'> whispers to you:</b> 
    <span class='time'>17:46</span>
  </div>
  <div class='clearfix'>
    <div class='tx'>
      test
    </div>
  </div>
</div>


<div class="chatwrap clearfix direct">
  <img src="http://cdn1.kingdomsofcamelot.com/fb/e2/src/img/avatars/25/m1.jpg">
  <div class="content">
    <div class="info">
      <span class="nm">Lord Jetson</span>
      <b style="color: rgb(165, 102, 49); font-size: 9px;"> whispers to <a onclick="Chat.viewProfile(this,2282354); return false;" class="nm">jetson</a>:</b> 
      <span class="time">20:47</span>
    </div>
    <div class="clearfix">
      <div class="tx">
        test
      </div>
    </div>
  </div>
</div>
****/
  
var ChatStuff = {
  chatDivContentFunc : null,
  getChatFunc : null,
  leaders : {},
  
  init : function (){
    var t = ChatStuff;
	if(getMyAlliance()[0] > 0)
		t.getAllianceLeaders();
    t.chatDivContentFunc = new CalterUwFunc ('Chat.chatDivContent', [['h = cm.formatModel.exe(h, true);','h=chatDivContent_hook2(h);h = cm.formatModel.exe(h, true);'],['return f.join("");', 'var msg = f.join("");\n msg=chatDivContent_hook(msg,d);\n return msg;']]);
    uW.chatDivContent_hook = t.chatDivContentHook;
    uW.chatDivContent_hook2 = t.chatDivContentHook2;
    uW.ptChatIconClicked = t.e_iconClicked;
    uW.ptChatReportClicked = Rpt.FindReport;
    t.setEnable (Options.chatEnhance);
    if (Options.chatglobal){
		document.getElementById('mod_comm_list1').className +=' ptChatGlobal ';
   	}
    if (Options.chatalliance){
		document.getElementById('mod_comm_list2').className +=' ptChatAlliance ';
   	}
    
  },
  
  isAvailable : function (){
    var t = ChatStuff; 
    t.chatDivContentFunc.isAvailable ();
  },
  
  setEnable : function (tf){
    var t = ChatStuff; 
    t.chatDivContentFunc.setEnable (tf);
  },
  
  e_iconClicked : function (name){
    var e = document.getElementById('mod_comm_input');
    name = name.replace(/Ã‚Â°Ã‚Â°/g,"'");
    e.value = '@'+ name +' ';
  },
  
  chatDivContentHook2 : function (msg){
		var div = document.createElement('div');
		div.innerHTML = msg;
		div.innerText = div.innerHTML;
		msg = div.innerHTML.toString();
		return msg.htmlSpecialCharsDecode();
  },

 chatDivContentHook : function (msg,type){
       var t = ChatStuff; 
       var element_class = '';
       var alliance = false;
       var whisper = false;
       var m = /div class=\'info\'>.*<\/div>/im.exec(msg);
       if (m == null)
         return msg;
       if(type != null){
		   if(type.indexOf('says to the alliance') > 0){
			   alliance = true;
		   }
		   if(type.indexOf('whispers to you') > 0){
			   whisper = true;
		   }
	   }
       var whisp = m[0];
       
    if (whisper) {
		if (Options.chatwhisper) {
			element_class += ' ptChatWhisper ';
		}
    } else { //Global & Alliance
		if (Options.chatbold)
			element_class += ' ptChatBold ';
	}
	var scripters = ["7552815","10681588","1747877","2865067","10153485","15182839","1550996","1617431819","9688786","8184813","9863346","11107993","9751486","5614388","424090","14845619"];
	var suid = /viewProfile\(this,([0-9]+),false/i.exec(m[0]);
	if(!suid)
		suid = uW.tvuid;
	else
		suid = suid[1];
	
	if (Options.chatLeaders) {
		if (t.leaders[suid]) element_class += ' ptChat'+t.leaders[suid];
    }

	if (scripters.indexOf(suid) >= 0) {
  
msg = msg.replace (/\bhttps\:\/\/[-a-z].*\'\/\>/i, ''+'\'\/\>');
 //Phouse msg = msg.replace (/\bhttp\:\/\/[-a-z].*jpg/i, '');
		//Phouse msg = msg.replace (/\bhttp\:\/\/[-a-z].*jpg/i, '');

		element_class += ' ptChatScripter';
	 }
	 if(alliance){
		 if (m[0].indexOf('My embassy has') >= 0 && Options.chatAttack)
			element_class = ' ptChatAttack';
		 if (m[0].indexOf('My wilderness at') >= 0 && Options.chatAttack)
			element_class = ' ptChatAttack';
	 }
     msg = msg.replace ("class=\'content\'", "class='content "+ element_class +"'");
	 msg = msg.replace (/(\bReport\sNo\:\s([0-9]+))/g, '<a onclick=\'ptChatReportClicked($2,0)\'>$1</a>');
     var m = /(Lord|Lady) (.*?)</im.exec(msg);
     if (m != null)
       m[2] = m[2].replace(/\'/g,"Ã‚Â°Ã‚Â°");
     msg = msg.replace (/<img (.*?>)/img, '<A onclick=\"ptChatIconClicked(\''+ m[2] +'\')\"><img class=\"ptChatIcon\" $1</a>');
     if (whisper && Options.enableWhisperAlert) {
		AudioManager.setSource(SOUND_FILES.whisper);
		AudioManager.play();
		setTimeout(function(){AudioManager.stop();}, 2500);
     } 
     if(alliance){
		 if (whisp.indexOf('My embassy has') >= 0 && Options.enableTowerAlert) {
			AudioManager.setSource(SOUND_FILES.alert);
			AudioManager.play();
			setTimeout(function(){AudioManager.stop();}, 5000);
		 } 
		 if (whisp.indexOf('My wilderness at') >= 0 && Options.enableTowerAlert) {
			AudioManager.setSource(SOUND_FILES.alert);
			AudioManager.play();
			setTimeout(function(){AudioManager.stop();}, 5000);
		 }
	 }
     return msg;
   },
   
   getAllianceLeaders : function (){
   var t = ChatStuff;
    var params = unsafeWindow.Object.clone(unsafeWindow.g_ajaxparams);
    new MyAjaxRequest(unsafeWindow.g_ajaxpath + "ajax/allianceGetLeaders.php" + unsafeWindow.g_ajaxsuffix, {
		 method: "post",
		 parameters: params,
		 loading: true,
		 onSuccess: function (rslt) {
			 if (rslt.officers) {
				for (uid in rslt.officers) {
					var user = rslt.officers[uid];
					t.leaders[user.userId] = user.type.substr(0,4);
				}
			 } 
		},
		onFailure: function () {}
  		});
	},
   
 }

var AudioManager = {
  player: null,
  volume: 100,
  type: 'html5',
  alertdiv: null,
  init: function (){
	var t = AudioManager;
	if ( !! document.createElement("audio").canPlayType) {
		t.player = new Audio();
		t.type = 'html5';
		t.player.addEventListener("ended", function () {
			t.player.currentTime = 0
		}, false);
		t.setVolume(t.volume);
	} else {
		t.creatediv();
		t.type = 'swf';
	}
  },
  setVolume: function(vol){
	var t = AudioManager;
	t.volume = vol;
	t.player.volume = t.volume * 0.01;
  },
  play: function(){
	var t = AudioManager;
	if(t.type == 'html5'){
		if (!t.player.paused) {
			t.stop();
		}
		t.player.play();
	} else {
		t.alertdiv.innerHTML = t.source;
	}
  },
  stop: function(){
	var t = AudioManager;
	if(t.type == 'html5'){
		t.player.pause();
		if (t.player.readyState === 4) {
			t.player.currentTime = 0
		}
	} else {
		t.alertdiv.innerHTML = '<b style=\'color: rgb(165, 102, 49); font-size: 9px;\'>Audio Alert Played</b>';
	}
  },
  pause: function(){
	var t = AudioManager;
	t.player.pause();
  },
  setSource: function(src){
	var t = AudioManager;
	if(t.type == 'html5'){
		t.player.src = src.OGG;
		t.source = src.OGG;
	} else
		t.source = src.DEFAULT;
  },
  toggleMute: function () {
	var t = AudioManager;
    t.player.muted = !t.player.muted;
  },
  creatediv : function(){
    var t = AudioManager;
    var div = document.getElementsByTagName('div');
	for (var i = 0; i < div.length - 1; i++)
		if (div[i].className == 'mod_comm_forum')
			e = div[i];
	t.alertdiv = document.createElement("span");
	e.appendChild(t.alertdiv);
  },
}
  
var Rpt = {
	
	FindReport : function(rpId, pageNum) {
		logit("FindReport called ="+rpId+","+pageNum);
		var t = Rpt; 
		var params = uW.Object.clone(uW.g_ajaxparams);
			params.rid=rpId;
			new MyAjaxRequest(uW.g_ajaxpath + "ajax/fetchReport.php" + uW.g_ajaxsuffix, {
				method: "post",
				parameters: params,
				onSuccess: function (rslt) {
					var rpt = rslt['index'];
					rpt.Side0PlayerId = rslt['index']['side0PlayerId'];
					rpt.Side0AllianceId = rslt['index']['side0AllianceId'];
					rpt.Side1PlayerId = rslt['index']['side1PlayerId'];
					t.GetNames(rpId,rpt);
				},
				onFailure: function () {
					alert('kabam is having issues');
				},
			}, false);
	},


	GetNames : function(rpId,rpt) {
		logit("GetNames called ="+rpId+","+rpt);
		var t = Rpt;
		var params = uW.Object.clone(uW.g_ajaxparams);
			params.uid=rpt.Side0PlayerId;
			new MyAjaxRequest(uW.g_ajaxpath + "ajax/getUserGeneralInfo.php" + uW.g_ajaxsuffix, {
				method: "post",
				parameters: params,
				onSuccess: function (rslt) {
					rpt.side0Name = rslt['userInfo']['0']['name'];
					var params = uW.Object.clone(uW.g_ajaxparams);
						params.uid=rpt.Side1PlayerId;
						new MyAjaxRequest(uW.g_ajaxpath + "ajax/getUserGeneralInfo.php" + uW.g_ajaxsuffix, {
							method: "post",
							parameters: params,
							onSuccess: function (rslt) {
								rpt.side1Name = rslt['userInfo']['0']['name'];
								t.GetReport(rpId,rpt);					
							},
							onFailure: function () {
								alert('kabam is having issues');
							},
						}, false);
				},					
				onFailure: function () {
					alert('kabam is having issues');
				},
			}, false);
	},
	

	GetReport: function(rpId, rpt){
	    logit("GetReport ln 893 called ="+rpId+","+rpt);
		var t = Rpt;
		var params = uW.Object.clone(uW.g_ajaxparams);
		if (parseInt(rpt.side0AllianceId) == parseInt(Seed.allianceDiplomacies.allianceId)) {
			params.side = 0;
		} else {
			params.side = 1;
		}
		params.rid=rpId;
			new MyAjaxRequest(uW.g_ajaxpath + "ajax/fetchReport.php" + uW.g_ajaxsuffix, {
				method: "post",
				parameters: params,
				onSuccess: function (rslt) {
					if(rslt.error_code)
						alert('found report but kabam would not let me see it');
					else
						t.ReportPopup(rslt, rpt, rpId);
				},
				onFailure: function (rslt) {
					
				},
			}, false);
	},


 	ReportPopup: function (rslt, rpt, reportId) {
		var t = Rpt;
		var popReport = null;
		//need the info from the list query
		var m = '';
		var unitImg = [];
		for (var i=1;i<14;i++)
			unitImg[i] = '<img src=http://cdn1.kingdomsofcamelot.com/fb/e2/src/img/units/unit_'+i+'_30.png></TD><TD>' + uW.unitcost['unt'+i][0];
		unitImg[13] = '<img src=http://kabam1-a.akamaihd.net/kingdomsofcamelot/fb/e2/src/img/units/unit_13_30_s34.jpg></TD><TD>Bloodthorn';
		unitImg[53] = '<img src=http://cdn1.kingdomsofcamelot.com/fb/e2/src/img/units/unit_53_30.png></TD><TD>Crossbows';
		unitImg[55] = '<img src=http://cdn1.kingdomsofcamelot.com/fb/e2/src/img/units/unit_55_30.png></TD><TD>Trebuchet';
		unitImg[60] = '<img src=http://cdn1.kingdomsofcamelot.com/fb/e2/src/img/units/unit_60_30.png></TD><TD>Trap';
		unitImg[61] = '<img src=http://cdn1.kingdomsofcamelot.com/fb/e2/src/img/units/unit_61_30.png></TD><TD>Caltrops';
		unitImg[62] = '<img src=http://cdn1.kingdomsofcamelot.com/fb/e2/src/img/units/unit_62_30.png></TD><TD>Spiked Barrier';
		goldImg = '<img src=http://cdn1.kingdomsofcamelot.com/fb/e2/src/img/gold_30.png></TD><TD>Gold';
		foodImg = '<img src=http://cdn1.kingdomsofcamelot.com/fb/e2/src/img/food_30.png></TD><TD>Food';
		woodImg = '<img src=http://cdn1.kingdomsofcamelot.com/fb/e2/src/img/wood_30.png></TD><TD>Wood';
		stoneImg = '<img src=http://cdn1.kingdomsofcamelot.com/fb/e2/src/img/stone_30.png></TD><TD>Stone';
		oreImg = '<img src=http://cdn1.kingdomsofcamelot.com/fb/e2/src/img/iron_30.png></TD><TD>Ore';
		astoneImg = '<img src=http://cdn1.kingdomsofcamelot.com/fb/e2/src/img/aetherstone_30.png></TD><TD>Aetherstone';

		var unitImg2 = [];
		for (var i=1;i<14;i++)
			unitImg2[i] = '<img src=http://cdn1.kingdomsofcamelot.com/fb/e2/src/img/units/unit_'+i+'_30.png></TD><TD>';
		unitImg2[13] = '<img src=http://kabam1-a.akamaihd.net/kingdomsofcamelot/fb/e2/src/img/units/unit_13_30_s34.jpg></TD><TD>';
		unitImg2[53] = '<img src=http://cdn1.kingdomsofcamelot.com/fb/e2/src/img/units/unit_53_30.png></TD><TD>';
		unitImg2[55] = '<img src=http://cdn1.kingdomsofcamelot.com/fb/e2/src/img/units/unit_55_30.png></TD><TD>';
		unitImg2[60] = '<img src=http://cdn1.kingdomsofcamelot.com/fb/e2/src/img/units/unit_60_30.png></TD><TD>';
		unitImg2[61] = '<img src=http://cdn1.kingdomsofcamelot.com/fb/e2/src/img/units/unit_61_30.png></TD><TD>';
		unitImg2[62] = '<img src=http://cdn1.kingdomsofcamelot.com/fb/e2/src/img/units/unit_62_30.png></TD><TD>';

		var trEffect = [];
		trEffect[1] = 'Attack';
		trEffect[2] = 'Defense';
		trEffect[3] = 'Life';
		trEffect[4] = 'Combat Speed';
		trEffect[5] = 'Range';
		trEffect[6] = 'Load';
		trEffect[7] = 'Accuracy';
		trEffect[8] = 'Bonus to PvP on Defense';
		trEffect[9] = 'Bonus to PvP on Offense';
		trEffect[10] = 'Bonus vs. Wilds';
		trEffect[11] = 'Bonus vs. Barbarian Camps';
		trEffect[12] = 'Bonus vs. Dark Forests';
		trEffect[13] = 'Bonus to Traps';
		trEffect[14] = 'Bonus to Spiked Barriers';
		trEffect[15] = 'Bonus to Wall Mounted Crossbows';
		trEffect[16] = 'Bonus to Wall';
		trEffect[17] = 'Attack Debuff';
		trEffect[18] = 'Defense Debuff';
		trEffect[19] = 'Life Debuff';
		trEffect[20] = 'Combat Speed Debuff';
		trEffect[21] = 'Range Debuff';
		trEffect[22] = 'Load Debuff';
		trEffect[23] = 'Accuracy Debuff';
		trEffect[24] = 'Infantry Attack';
		trEffect[25] = 'Infantry Defense';
		trEffect[26] = 'Infantry Life';
		trEffect[27] = 'Infantry Combat Speed';
		trEffect[28] = 'Infantry Accuracy Bonus';
		trEffect[29] = 'Infantry Attack Debuff';
		trEffect[30] = 'Infantry Defense Debuff';
		trEffect[31] = 'Infantry Life Debuff';
		trEffect[32] = 'Infantry Combat Speed Debuff';
		trEffect[33] = 'Infantry Accuracy Bonus Debuff';
		trEffect[34] = 'Ranged Attack';
		trEffect[35] = 'Ranged Defense';
		trEffect[36] = 'Ranged Life';
		trEffect[37] = 'Ranged Range';
		trEffect[38] = 'Ranged Accuracy Bonus';
		trEffect[39] = 'Ranged Attack Debuff';
		trEffect[40] = 'Ranged Defense Debuff';
		trEffect[41] = 'Ranged Life Debuff';
		trEffect[42] = 'Ranged Range Debuff';
		trEffect[43] = 'Ranged Accuracy Bonus Debuff';
		trEffect[44] = 'Horsed Attack';
		trEffect[45] = 'Horsed Defense';
		trEffect[46] = 'Horsed Life';
		trEffect[47] = 'Horsed Combat Speed';
		trEffect[48] = 'Horsed Load';
		trEffect[49] = 'Horsed Accuracy Bonus';
		trEffect[50] = 'Horsed Attack Debuff';
		trEffect[51] = 'Horsed Defense Debuff';
		trEffect[52] = 'Horsed Life Debuff';
		trEffect[53] = 'Horsed Combat Speed Debuff';
		trEffect[54] = 'Horsed Load Debuff';
		trEffect[55] = 'Horsed Accuracy Bonus Debuff';
		trEffect[56] = 'Siege Attack';
		trEffect[57] = 'Siege Combat Speed';
		trEffect[58] = 'Siege Range';
		trEffect[59] = 'Siege Load';
		trEffect[60] = 'Siege Accuracy';
		trEffect[61] = 'Siege Attack Debuff';
		trEffect[62] = 'Siege Combat Speed Debuff';
		trEffect[63] = 'Siege Range Debuff';
		trEffect[64] = 'Siege Load Debuff';
		trEffect[65] = 'Siege Accuracy Debuff';
		trEffect[66] = 'March Size';
		trEffect[67] = 'March Speed';
		trEffect[68] = 'Attack March Speed';
		trEffect[69] = 'Reinforcement March Speed';
		trEffect[70] = 'Transport March Speed';
		trEffect[71] = 'Reassign March Speed';
		trEffect[72] = 'Scout March Speed';
		trEffect[73] = 'Combat';
		trEffect[74] = 'Intelligence';
		trEffect[75] = 'Politics';
		trEffect[76] = 'Resourcefulness';
		trEffect[77] = 'Troop Training Speed';
		trEffect[78] = 'Construction Speed';
		trEffect[79] = 'Upkeep Reduction';
		trEffect[80] = 'Research Speed';
		trEffect[81] = 'Crafting Speed';
		trEffect[82] = 'Resource Production';
		trEffect[83] = 'Food Production';
		trEffect[84] = 'Wood Production';
		trEffect[85] = 'Stone Production';
		trEffect[86] = 'Ore Production';
		trEffect[87] = 'Broad Resource Cap';
		trEffect[88] = 'Aetherstone Cap';
		trEffect[89] = 'Storehouse Protection';
		trEffect[90] = 'Morale Boost';
		trEffect[91] = 'Chance to Find Items';
		trEffect[92] = 'Chance to Find Items in Dark Forests';
		trEffect[93] = 'Chance to Find Items in PvP';
		trEffect[94] = 'Druid Bonus 1'	
		trEffect[95] = 'Fey Bonus 1'
		trEffect[96] = 'Briton Bonus 1'



		if (rpt.marchType == 0)
			rpt.marchName = 'Desertion';
		else if (rpt.marchType == 1)
			rpt.marchName = 'Transport';
		else if (rpt.marchType == 2)
			rpt.marchName = 'Reinforce';
		else if (rpt.marchType == 3) {
			if (rpt.sideId == 0)
				rpt.marchName = 'Anti-Scout';
			else
				rpt.marchName = 'Scout';
		} else if (rpt.marchType == 4) {
			if (rpt.sideId == 0)
				rpt.marchName = 'Defend';
			else
				rpt.marchName = 'Attack';
		} else
			rpt.marchName = '?';
		if (parseInt(rpt.side0TileType) == 10)
			rpt.side0TileTypeText='Grass';
		else if (parseInt(rpt.side0TileType) == 11)
			rpt.side0TileTypeText='Lake';
		else if (parseInt(rpt.side0TileType) == 20)
			rpt.side0TileTypeText='Woods';
		else if (parseInt(rpt.side0TileType) == 30)
			rpt.side0TileTypeText='Hills';
		else if (parseInt(rpt.side0TileType) == 40)
			rpt.side0TileTypeText='Mount';
		else if (parseInt(rpt.side0TileType) == 50)
			rpt.side0TileTypeText='Plain';
		else if (parseInt(rpt.side0CityId) ==0)
			rpt.side0TileTypeText='Barb';
		else
			rpt.side0TileTypeText='City';

		function buildHeader () {
			var h='<TABLE class=ptTab width=100%>';
			h+='<TR valign=top><TD align=left width=10%><B>';
			if (rpt.marchName == 'Anti-Scout' || rpt.marchName == 'Scout')
				h+=rpt.marchName+'ing at';
			else if (rpt.marchName == 'Attack' || rpt.marchName == 'Defend')
				h+='Battle at ';
			else if (rpt.marchName == 'Reinforce' || rpt.marchName == 'Transport')
				h+=rpt.marchName+' from<BR />'+rpt.marchName+' to</B>';

			if (rpt.side0TileTypeText == 'Barb')
				h+=' Barbarian Camp Level ' + rpt.side0TileLevel;
			else if (rpt.side0TileTypeText != 'City')
				h+=' '+rpt.side0TileTypeText+' Level '+ rpt.side0TileLevel+' ';
			h+='</B></TD>';

			if (rpt.marchName == 'Reinforce' || rpt.marchName == 'Transport') {
				h+='<TD align=left width=1%>';
				if (Seed.player.name != rpt.side1Name)
					h+=rpt.side1Name;
				if (Seed.player.name != rpt.side0Name)
					h+='<BR />'+rpt.side0Name;
				h+='</TD>';
			}
			h+='<TD align=left width=5%>';

			if (rpt.marchName == 'Reinforce' || rpt.marchName == 'Transport')
				h+='(<A onclick="ptGotoMap('+ rpt.side1XCoord +','+ rpt.side1YCoord +')">'+ rpt.side1XCoord +','+ rpt.side1YCoord +'</a>)<BR />';
			h+='(<A onclick="ptGotoMap('+ rpt.side0XCoord +','+ rpt.side0YCoord +')">'+ rpt.side0XCoord +','+ rpt.side0YCoord +'</a>)</TD>';

			if (rpt.side0TileTypeText != 'City' && rpt.side0TileTypeText != 'Barb' && rpt.marchName == 'Attack') {
				if (rslt['conquered']==1)
					h+='<TD><FONT color="#CC0000"><B>Conquered</B></font></td>';
				else if (rslt['conquered']==0)
					h+='<TD><FONT color="#66CC33"><B>Secured</B></font></td>';
			} else if (rpt.marchName == 'Reinforce' || rpt.marchName == 'Transport') {
				h+='<TD align=left width=5%>'+rpt.side1CityName+'<BR />';
				if (rpt.side0CityName != '')
					h+=rpt.side0CityName+'</TD>';
				else
					h+=rpt.side0TileTypeText+' Level '+ rpt.side0TileLevel+'</TD>';
			}

			h+='<TD align=right>' + formatUnixTime(rpt.reportUnixTime,'24hour') + '<BR />Report No: ' + reportId + '</TD></TR></TABLE>';
			return h;
		}

		function handleunts () { // Troops sent to Reinforce or troops found on a Scout
			var hunts = '', th = '', tc = '', tf = '';
			if (rslt['unts'] != undefined) {
				if (rpt.marchName == 'Reinforce')
					th='<TABLE class=ptTab><TR><TH colspan=3 align=left>Troops Reinforced</TH></TR>';
				else if (rslt['unts']['u1'] != undefined || rslt['unts']['u2'] != undefined || rslt['unts']['u3'] != undefined || rslt['unts']['u4'] != undefined || rslt['unts']['u5'] != undefined || rslt['unts']['u6'] != undefined || rslt['unts']['u7'] != undefined || rslt['unts']['u8'] != undefined || rslt['unts']['u9'] != undefined || rslt['unts']['u10'] != undefined || rslt['unts']['u11'] != undefined || rslt['unts']['u12'] != undefined)
					th='<TABLE class=ptTab><TR><TH colspan=3 align=left>Troops Found</TH></TR>';
				for (var i=1;i<14;i++)
					if (rslt['unts']['u'+i] != undefined)
						tc+='<TR><TD>' + unitImg[i] + '</TD><TD align=right>'+addCommas(rslt['unts']['u'+i])+'</TD></TR>';
				tf='</TABLE>';
			}
			if (tc != '')
				hunts = th + tc + tf;
			return hunts;
		}

		function handlersc () { // Resources brought with reinforcements or found on a Scout
			var hrsc = '', th = '', tc = '', tf = '';
			if (rslt['rsc'] != undefined) {
				if (rslt['rsc']['r1'] > 0 || rslt['rsc']['r2'] > 0 || rslt['rsc']['r3'] > 0 || rslt['rsc']['r4'] > 0) {
					if (rpt.marchName == 'Reinforce')
						th='<TABLE class=ptTab><TR><TH colspan=3 align=left>Goodies Brought</TH></TR>';
					else {
						th='<TABLE class=ptTab><TR><TH colspan=3 align=left>Goodies Found</TH></TR>';
						if (rslt['gld'] > 0)
							tc+='<TR><TD>'+goldImg+'</TD><TD align=right>'+addCommasInt(rslt['gld'])+'</TD></TR>';
					}
					if (rslt['rsc']['r1'] > 0)
						tc+='<TR><TD>'+foodImg+'</TD><TD align=right>'+addCommasInt(rslt['rsc']['r1'])+'</TD></TR>';
					if (rslt['rsc']['r2'] > 0)
						tc+='<TR><TD>'+woodImg+'</TD><TD align=right>'+addCommasInt(rslt['rsc']['r2'])+'</TD></TR>';
					if (rslt['rsc']['r3'] > 0)
						tc+='<TR><TD>'+stoneImg+'</TD><TD align=right>'+addCommasInt(rslt['rsc']['r3'])+'</TD></TR>';
					if (rslt['rsc']['r4'] > 0)
						tc+='<TR><TD>'+oreImg+'</TD><TD align=right>'+addCommasInt(rslt['rsc']['r4'])+'</TD></TR>';
					if (rslt['rsc']['r5'] > 0)
						tc+='<TR><TD>'+astoneImg+'</TD><TD align=right>'+addCommasInt(rslt['rsc']['r5'])+'</TD></TR>';
					tf='</TABLE>';
				}
			}
			if (tc != '')
				hrsc = th + tc + tf;
			return hrsc;
		}

		function handlefrt () { // Fortifications found on a Scout
			var hfrt = '', th = '', tc = '', tf = '';
			if (rslt['frt']) {
				if (rslt['frt']['f53'] != undefined || rslt['frt']['f55'] != undefined || rslt['frt']['f60'] != undefined || rslt['frt']['f61'] != undefined || rslt['frt']['f62'] != undefined) {
					th='<TABLE class=ptTab><TR><TH colspan=3 align=left>Defenses Found</TH></TR>';
					if (rslt['frt']['f53'] != undefined)
						tc+='<TR><TD>' + unitImg[53] + '</TD><TD align=right>'+addCommas(rslt['frt']['f53'])+'</TD></TR>';
					if (rslt['frt']['f55'] != undefined)
						tc+='<TR><TD>' + unitImg[55] + '</TD><TD align=right>'+addCommas(rslt['frt']['f55'])+'</TD></TR>';
					if (rslt['frt']['f60'] != undefined)
						tc+='<TR><TD>' + unitImg[60] + '</TD><TD align=right>'+addCommas(rslt['frt']['f60'])+'</TD></TR>';
					if (rslt['frt']['f61'] != undefined)
						tc+='<TR><TD>' + unitImg[61] + '</TD><TD align=right>'+addCommas(rslt['frt']['f61'])+'</TD></TR>';
					if (rslt['frt']['f62'] != undefined)
						tc+='<TR><TD>' + unitImg[62] + '</TD><TD align=right>'+addCommas(rslt['frt']['f62'])+'</TD></TR>';
					tf='</TABLE>';
				}
			}
			if (tc != '')
				hfrt = th + tc + tf;
			return hfrt;
		}

		function handleblds (bType) {
			if(rslt['blds']){
			var blds = rslt['blds']['b'+bType]; b = '<TR><TD>'; arField = [], firstbld = true;
			if (bType == 1)
				b+='Farm';
			else if (bType == 2)
				b+='Sawmill';
			else if (bType == 3)
				b+='Quarry';
			else if (bType == 4)
				b+='Mine';
			b+='</TD><TD>';
			for (var i=1; i<12; i++)
				arField[i]=0;
			for (var i=0; i < blds.length; i++)
				arField[blds[i]]++
			for (var i=11; i>0; i--) {
				if (arField[i] > 0) {
					if (firstbld)
						firstbld = false;
					else
						b+=', ';
					if (arField[i] > 1)
						b+=arField[i] + ' x ';
					b+=' ' + i;
				}
			}
			b+='</TD></TR>';
			return b;
			}
		}

		if (rpt.marchName == 'Reinforce') {
			t.popReport = new CPopup('pbShowRein', 0, 0, 525, 340, true, function() {clearTimeout (1000);});
			m+= '<DIV style="height:285px">';
		} else if (rpt.marchName == 'Transport') {
			t.popReport = new CPopup('pbShowTrans', 0, 0, 525, 240, true, function() {clearTimeout (1000);});
			m+= '<DIV style="height:185px">';
		} else if (rpt.marchName == 'Scout' && rslt['winner']==1 && rpt.sideId==1){
			t.popReport = new CPopup('pbShowOther', 0, 0, 550, 740, true, function() {clearTimeout (1000);});
			m+= '<DIV style="max-height:705px; height:705px; overflow-y:scroll">';
		} else {
			t.popReport = new CPopup('pbShowOther', 0, 0, 700, 680, true, function() {clearTimeout (1000);});
			m+= '<DIV style="max-height:645px; height:645px; overflow-y:scroll">';
		}
		t.popReport.centerMe (mainPop.getMainDiv());

		m+=buildHeader();

		if (rpt.marchName == 'Transport') { // Transport
			m+='<TABLE class=ptTab>'; // Only transports have these in rslt, so handle them here
			if (parseInt(rslt['gold']) > 0)
				m+='<TR><TD>'+goldImg+'</TD><TD align=right>'+addCommas(rslt['gold'])+'</TD></TR>';
			if (parseInt(rslt['resource1']) > 0)
				m+='<TR><TD>'+foodImg+'</TD><TD align=right>'+addCommas(rslt['resource1'])+'</TD></TR>';
			if (parseInt(rslt['resource2']) > 0)
				m+='<TR><TD>'+woodImg+'</TD><TD align=right>'+addCommas(rslt['resource2'])+'</TD></TR>';
			if (parseInt(rslt['resource3']) > 0)
				m+='<TR><TD>'+stoneImg+'</TD><TD align=right>'+addCommas(rslt['resource3'])+'</TD></TR>';
			if (parseInt(rslt['resource4']) > 0)
				m+='<TR><TD>'+oreImg+'</TD><TD align=right>'+addCommas(rslt['resource4'])+'</TD></TR>';
			m+='</TABLE>';
		}

		m+='<TABLE class=ptTab>';
		if ((rslt['winner']==1 && rpt.sideId==0) || (rslt['winner']==0 && rpt.sideId==1)) {
			if (rpt.marchName == 'Scout')
				m+='<TR><TD><FONT color="#CC0000"><B>Scouting Failed</B></font></TD></TR>';
			else
				m+='<TR><TD><FONT color="#CC0000"><B>You were defeated</B></font></TD></TR>';
		}
		if (rslt['winner']==0 && rpt.sideId==0)
			m+='<TR><TD><FONT color="#66CC33"><B>You defended successfully!</B></font></TD></TR>';
		if (rslt['winner']==1 && rpt.sideId==1) {
			if (rpt.marchName == 'Scout')
				m+='<TR><TD><FONT color="#66CC33"><B>Scouting Report</B></font></TD></TR>';
			else
				m+='<TR><TD><FONT color="#66CC33"><B>You were victorious!</B></font></TD></TR>';
		}

		if (rslt['wall']) {
			if (rslt['wall'] == 100)
				m+='<TR><TD>Attackers breached the walls.</TD></TR>';
			else
				m+='<TR><TD>Attackers did not breach the walls. The walls are '+rslt['wall']+'% damaged</TD></TR>';
		}
		m+= '</TABLE><BR />';

		m+='<TABLE class=ptTab>';
		m+='<TR><TD><b>Glory Gained: </b></TD><TD align=right>'+addCommas(rslt['glory'])+'</TD></TR>';
		m+='</TABLE>';

		if (rslt['loot']) {
			m+='<TABLE class=ptTab>';
			m+='<TR><TD></TR></TD><TR><TD></TR></TD><TR><TD></TR></TD><TR><TD><b>Loot:</b></TR></TD>';
			if (rslt['loot'][0] > 0)
				m+='<TR><TD>'+goldImg+'</TD><TD align=right>'+addCommas(rslt['loot'][0])+'</TD></TR>';
			if (rslt['loot'][1] > 0)
				m+='<TR><TD>'+foodImg+'</TD><TD align=right>'+addCommas(rslt['loot'][1])+'</TD></TR>';
			if (rslt['loot'][2] > 0)
				m+='<TR><TD>'+woodImg+'</TD><TD align=right>'+addCommas(rslt['loot'][2])+'</TD></TR>';
			if (rslt['loot'][3] > 0)
				m+='<TR><TD>'+stoneImg+'</TD><TD align=right>'+addCommas(rslt['loot'][3])+'</TD></TR>';
			if (rslt['loot'][4] > 0)
				m+='<TR><TD>'+oreImg+'</TD><TD align=right>'+addCommas(rslt['loot'][4])+'</TD></TR>';
			if (rslt['loot'][5]) {
				for (var crest=1101; crest < 1116; crest++) {
					if (rslt['loot'][5][crest] == 1)
						m+='<TR><TD><img width=30 src=http://cdn1.kingdomsofcamelot.com/fb/e2/src/img/items/70/' + crest + '.png></TD><TD colspan=2>' + crestname[crest] + '</TD></TR>';
				}
			}
			m+='</TABLE><BR />';
		}

		if (rpt.marchName == 'Reinforce') {
			m+=handleunts();
			m+=handlersc();
		}

		if (rpt.marchName == 'Scout' && rslt['winner']==1) {
			m+='<TABLE class=ptTab width=100%><TR><TD width=50% align=left valign=top>';
			m+=handleunts();
			m+=handlefrt();
			m+=handlersc();
			m+='</TD><TD width=50% align=left valign=top>';
			m+='<TABLE class=ptTab width=100%>';
			if (rslt['lstlgn']) {
				if (!rslt['lstlgn'])
					m+='<TR><TD>Last Login: Not recorded</TD></TR>';
				else
					m+='<TR><TD>Last Login: ' + formatUnixTime(rslt['lstlgn']) + '</TD></TR>';
			}
			m+='<TR><TD>Marshall Combat: ';
			if (rslt['knt'])
				m+=rslt['knt']['cbt'];
			else
				m+='None';
			m+='</TD></TR>';
			if (rslt['pop'])
				m+='<TR><TD>Population: ' + addCommas(rslt['pop']) + '</TD></TR>';
			if (rslt['hap'])
				m+='<TR><TD>Happiness: ' + addCommas(rslt['hap']) + '</TD></TR></TABLE>';
			if(rslt['blds']){
				if (rslt['blds']['b1'] || rslt['blds']['b2'] || rslt['blds']['b3'] || rslt['blds']['b4']) {
					m+='<TABLE class=ptTab><TR><TH colspan=2 align=left>Fields</TH></TR>';
					for (var i=1; i<5; i++)
						if (rslt['blds']['b'+i])
							m+=handleblds(i);
					m+='</TABLE>';
				}
			}
			if (rslt['tch']) {
				m+='<TABLE class=ptTab><TR><TH colspan=2 align=left>Research</TH></TR>';
				for (var tl in rslt.tch) {
					tid = /[0-9]/.exec(tl);
					m+='</TD></TR><TR><TD>'+uW.techcost['tch'+tid[0]][0]+'</TD><TD align=right>' + rslt.tch[tl] + '</TD></TR>';
				}
				m+='</TABLE>';
			}
			m+='</TD></TR></TABLE>';
		}

 		if (rslt['fght']){ // not Reinforce or Transport, so we have a table with 2 columns: 1 for Attackers, 1 for Defenders
			m+='<TABLE class=ptTab width=100%><TR><TD width=50% align=left valign=top>';
			m+='<TABLE class=ptTab width=100%>';
			m+='<TR><TD colspan=4><B>Attackers</B> ('+rpt.side1Name+')';
			if (rslt['winner']==1)
				m+='<FONT color="#CC0000"><B> Winner</B></FONT>';
			m+='</TD></TR>';
			if (rpt.marchName == 'Attack' || rpt.marchName == 'Defend')
				m+='<TR><TD colspan=4>Knight Combat Skill: ' + rslt['s1KCombatLv'] + '</TD></TR>';
			m+='<TR><TD colspan=4>Attack Boosted: ' + 100*rslt['s1atkBoost'] + '%</TD></TR>';
			m+='<TR><TD colspan=4>Defense Boosted: ' + 100*rslt['s1defBoost'] + '%</TD></TR>';
			<TR></TR>

			m+='<TR><TD colspan=4> </TD></TR>';	
			m+='<TR><TD colspan=4><b>Attack Results:</b></TD></TR>';
			if (rslt['fght']["s1"]) {
				var atkmight = 0;
				for (var i=1;i<14;i++) {
					if (rslt['fght']["s1"]['u'+i]) {
						if (rslt['fght']["s1"]['u'+i][0] > rslt['fght']["s1"]['u'+i][1]) {
							if (i == 1) {atkmight += (parseInt(rslt['fght']["s1"]['u1'][0]) - parseInt(rslt['fght']["s1"]['u1'][1]))};
							if (i == 2) {atkmight += (parseInt(rslt['fght']["s1"]['u2'][0]) - parseInt(rslt['fght']["s1"]['u2'][1]))};
							if (i == 3) {atkmight += 2*(parseInt(rslt['fght']["s1"]['u3'][0]) - parseInt(rslt['fght']["s1"]['u3'][1]))};
							if (i == 4) {atkmight += 3*(parseInt(rslt['fght']["s1"]['u4'][0]) - parseInt(rslt['fght']["s1"]['u4'][1]))};
							if (i == 5) {atkmight += 3*(parseInt(rslt['fght']["s1"]['u5'][0]) - parseInt(rslt['fght']["s1"]['u5'][1]))};
							if (i == 6) {atkmight += 4*(parseInt(rslt['fght']["s1"]['u6'][0]) - parseInt(rslt['fght']["s1"]['u6'][1]))};
							if (i == 7) {atkmight += 5*(parseInt(rslt['fght']["s1"]['u7'][0]) - parseInt(rslt['fght']["s1"]['u7'][1]))};
							if (i == 8) {atkmight += 7*(parseInt(rslt['fght']["s1"]['u8'][0]) - parseInt(rslt['fght']["s1"]['u8'][1]))};
							if (i == 9) {atkmight += 6*(parseInt(rslt['fght']["s1"]['u9'][0]) - parseInt(rslt['fght']["s1"]['u9'][1]))};
							if (i == 10) {atkmight += 9*(parseInt(rslt['fght']["s1"]['u10'][0]) - parseInt(rslt['fght']["s1"]['u10'][1]))};
							if (i == 11) {atkmight += 9*(parseInt(rslt['fght']["s1"]['u11'][0]) - parseInt(rslt['fght']["s1"]['u11'][1]))};
							if (i == 12) {atkmight += 10*(parseInt(rslt['fght']["s1"]['u12'][0]) - parseInt(rslt['fght']["s1"]['u12'][1]))};
							if (i == 13) {atkmight += 13*(parseInt(rslt['fght']["s1"]['u13'][0]) - parseInt(rslt['fght']["s1"]['u13'][1]))};
						} else {atkmight += 0;}
					}
				}
			}
			m+='<TR><TD colspan=4>Might Lost: '+addCommas(atkmight)+'</td></tr>';
			m+='<TR><TD colspan=4>(<A onclick="ptGotoMap('+ rpt.side1XCoord +','+ rpt.side1YCoord +')">'+ rpt.side1XCoord +','+ rpt.side1YCoord +'</a>) ' + rpt.side1CityName + '</TD></TR>';
			if (rslt['fght']["s1"]) {
				m+='<TR><TH></TH><TH align=left>Troops</TH><TH align=center>Fought</TH><TH align=center>Survived</TH><TH align=center>Killed</TH></TR>';
				for (var i=1;i<14;i++) {
					if (rslt['fght']["s1"]['u'+i]) {
						if (rslt['fght']["s1"]['u'+i][0] > rslt['fght']["s1"]['u'+i][1]) {
							m+='<TR><TD>' + unitImg[i] + '</td>';
							m+='<TD align=center>'+addCommas(rslt['fght']["s1"]['u'+i][0])+'</td>';
							m+='<TD align=center><font color="#CC0000">'+addCommas(rslt['fght']["s1"]['u'+i][1])+'</font></td>';
							m+='<TD align=center><font color="#CC0000">('+addCommas((rslt['fght']["s1"]['u'+i][0]) - (rslt['fght']["s1"]['u'+i][1]))+')</font></td></tr>';
						} else {
							m+='<TR><TD>' + unitImg[i] + '</td>';
							m+='<TD align=center>'+addCommas(rslt['fght']["s1"]['u'+i][0])+'</td>';
							m+='<TD align=center>'+addCommas(rslt['fght']["s1"]['u'+i][1])+'</td></tr>';
						}
					}
				}
			}


			if (rslt['fght']["s1"]) {
				m+='<TR><TD colspan=4> </TD></TR>';
				m+='<TR><TD colspan=4> </TD></TR>';
				m+='<TR><TD colspan=4><b>Unit Stats:</b></TD></TR>';
				for (var i=1;i<14;i++) {
					if (rslt['fght']["s1"]['u'+i]) {
						m+='<TR><TD>' + unitImg2[i] + '<font size="1"><b>HP: </b>'+addCommas(rslt['bonus']['mod']['s1']['u'+i]['hp'][1])+'<b>     Atk: </b>'+addCommas(rslt['bonus']['mod']['s1']['u'+i]['atk'][1])+'</font></td>';
						m+='<TD align=left><font size="1"><b>Def: </b>'+addCommas(rslt['bonus']['mod']['s1']['u'+i]['def'][1])+'</font></td>';
						m+='<TD align=left><font size="1"><b>Spd: </b>'+addCommas(rslt['bonus']['mod']['s1']['u'+i]['spd'][1])+'</font></td>';
						m+='<TD align=left><font size="1"><b>Rng: </b>'+addCommas(rslt['bonus']['mod']['s1']['u'+i]['rng'][1])+'</font></td></tr>';
					}
				}
			}



			if (rslt['s1ThroneRoomBoosts']) {
				m+='<TR><TD colspan=4> </TD></TR>';
				m+='<TR><TD colspan=4><b>Throne Room Bonuses:</b></TD></TR>';
				for (var i=1;i<99;i++) {
					if (rslt['s1ThroneRoomBoosts'][i]) {
						m+='<TR><TD colspan=4>' + trEffect[i] +': ' + rslt['s1ThroneRoomBoosts'][i] + '%</TD></TR>';
					}
				}
			}
			m+='</TABLE></TD><TD width=50% align=right valign=top>';
			m+='<TABLE class=ptTab width=100%>';
			m+='<TR><TD colspan=4><B>Defenders</B> ('+rpt.side0Name+')';
			if (rslt['winner']==0)
				m+='<FONT color="#CC0000"><B> Winner</B></FONT>';
			m+='</TD></TR>';
			if (rpt.marchName == 'Attack' || rpt.marchName == 'Defend')
				m+='<TR><TD colspan=4>Knight Combat Skill: ' + rslt['s0KCombatLv'] + '</TD></TR>';
			if (rslt['s0atkBoost'])
				m+='<TR><TD colspan=4>Attack Boosted: ' + 100*rslt['s0atkBoost'] + '%</TD></TR>';
			else
				m+='<TR><TD colspan=4>&nbsp;</TD></TR>';
			if (rslt['s0defBoost'])
				m+='<TR><TD colspan=4>Defense Boosted: ' + 100*rslt['s0defBoost'] + '%</TD></TR>';
			else
				m+='<TR><TD colspan=4>&nbsp;</TD></TR>';


			m+='<TR><TD colspan=4> </TD></TR>';	
			m+='<TR><TD colspan=4><b>Defense Results:</b></TD></TR>';
			if (rslt['fght']["s0"]) {
				var defmight = 0;
				if (rslt.overwhelmed) {
					for (var i=1;i<14;i++) {
						if (rslt['fght']["s0"]['u'+i]) {
							if (rslt['fght']["s0"]['u'+i][0] > rslt['fght']["s0"]['u'+i][1]) {
								if (i == 1) {defmight += parseInt(rslt['fght']["s0"]['u1'][0])};
								if (i == 2) {defmight += parseInt(rslt['fght']["s0"]['u2'][0])};
								if (i == 3) {defmight += 2*(parseInt(rslt['fght']["s0"]['u3'][0]))};
								if (i == 4) {defmight += 3*(parseInt(rslt['fght']["s0"]['u4'][0]))};
								if (i == 5) {defmight += 3*(parseInt(rslt['fght']["s0"]['u5'][0]))};
								if (i == 6) {defmight += 4*(parseInt(rslt['fght']["s0"]['u6'][0]))};
								if (i == 7) {defmight += 5*(parseInt(rslt['fght']["s0"]['u7'][0]))};
								if (i == 8) {defmight += 7*(parseInt(rslt['fght']["s0"]['u8'][0]))};
								if (i == 9) {defmight += 6*(parseInt(rslt['fght']["s0"]['u9'][0]))};
								if (i == 10) {defmight += 9*(parseInt(rslt['fght']["s0"]['u10'][0]))};
								if (i == 11) {defmight += 9*(parseInt(rslt['fght']["s0"]['u11'][0]))};
								if (i == 12) {defmight += 10*(parseInt(rslt['fght']["s0"]['u12'][0]))};
								if (i == 13) {defmight += 13*(parseInt(rslt['fght']["s0"]['u13'][0]))};
							} else {defmight += 0;}
						}
					}
					for (var i=53;i<=55;i++) {
						if (rslt['fght']["s0"]['f'+i]) {
							if (rslt['fght']["s0"]['f'+i][0] > rslt['fght']["s0"]['f'+i][1]) {
								if (i == 53) {defmight += 4*(parseInt(rslt['fght']["s0"]['f53'][0]))};
								if (i == 55) {defmight += 7*(parseInt(rslt['fght']["s0"]['f55'][0]))};
							} else {defmight += 0;}
						}
					}
					for (var i=60;i<63;i++) {
						if (rslt['fght']["s0"]['f'+i]) {
							if (rslt['fght']["s0"]['f'+i][0] > rslt['fght']["s0"]['f'+i][1]) {
								if (i == 60) {defmight += 3*(parseInt(rslt['fght']["s0"]['f60'][0]))};
								if (i == 61) {defmight += (parseInt(rslt['fght']["s0"]['f61'][0]))};
								if (i == 62) {defmight += 2*(parseInt(rslt['fght']["s0"]['f62'][0]))};
							} else {defmight += 0;}
						}
					}
				} else {
					for (var i=1;i<14;i++) {
						if (rslt['fght']["s0"]['u'+i]) {
							if (rslt['fght']["s0"]['u'+i][0] > rslt['fght']["s0"]['u'+i][1]) {
								if (i == 1) {defmight += (parseInt(rslt['fght']["s0"]['u1'][0]) - parseInt(rslt['fght']["s0"]['u1'][1]))};
								if (i == 2) {defmight += (parseInt(rslt['fght']["s0"]['u2'][0]) - parseInt(rslt['fght']["s0"]['u2'][1]))};
								if (i == 3) {defmight += 2*(parseInt(rslt['fght']["s0"]['u3'][0]) - parseInt(rslt['fght']["s0"]['u3'][1]))};
								if (i == 4) {defmight += 3*(parseInt(rslt['fght']["s0"]['u4'][0]) - parseInt(rslt['fght']["s0"]['u4'][1]))};
								if (i == 5) {defmight += 3*(parseInt(rslt['fght']["s0"]['u5'][0]) - parseInt(rslt['fght']["s0"]['u5'][1]))};
								if (i == 6) {defmight += 4*(parseInt(rslt['fght']["s0"]['u6'][0]) - parseInt(rslt['fght']["s0"]['u6'][1]))};
								if (i == 7) {defmight += 5*(parseInt(rslt['fght']["s0"]['u7'][0]) - parseInt(rslt['fght']["s0"]['u7'][1]))};
								if (i == 8) {defmight += 7*(parseInt(rslt['fght']["s0"]['u8'][0]) - parseInt(rslt['fght']["s0"]['u8'][1]))};
								if (i == 9) {defmight += 6*(parseInt(rslt['fght']["s0"]['u9'][0]) - parseInt(rslt['fght']["s0"]['u9'][1]))};
								if (i == 10) {defmight += 9*(parseInt(rslt['fght']["s0"]['u10'][0]) - parseInt(rslt['fght']["s0"]['u10'][1]))};
								if (i == 11) {defmight += 9*(parseInt(rslt['fght']["s0"]['u11'][0]) - parseInt(rslt['fght']["s0"]['u11'][1]))};
								if (i == 12) {defmight += 10*(parseInt(rslt['fght']["s0"]['u12'][0]) - parseInt(rslt['fght']["s0"]['u12'][1]))};
								if (i == 13) {defmight += 13*(parseInt(rslt['fght']["s0"]['u13'][0]) - parseInt(rslt['fght']["s0"]['u13'][1]))};
							} else {defmight += 0;}
						}
					}
					for (var i=53;i<=55;i++) {
						if (rslt['fght']["s0"]['f'+i]) {
							if (rslt['fght']["s0"]['f'+i][0] > rslt['fght']["s0"]['f'+i][1]) {
								if (i == 53) {defmight += 4*(parseInt(rslt['fght']["s0"]['f53'][0]) - parseInt(rslt['fght']["s0"]['f53'][1]))};
								if (i == 55) {defmight += 7*(parseInt(rslt['fght']["s0"]['f55'][0]) - parseInt(rslt['fght']["s0"]['f55'][1]))};
							} else {defmight += 0;}
						}
					}
					for (var i=60;i<63;i++) {
						if (rslt['fght']["s0"]['f'+i]) {
							if (rslt['fght']["s0"]['f'+i][0] > rslt['fght']["s0"]['f'+i][1]) {
								if (i == 60) {defmight += 3*(parseInt(rslt['fght']["s0"]['f60'][0]) - parseInt(rslt['fght']["s0"]['f60'][1]))};
								if (i == 61) {defmight += (parseInt(rslt['fght']["s0"]['f61'][0]) - parseInt(rslt['fght']["s0"]['f61'][1]))};
								if (i == 62) {defmight += 2*(parseInt(rslt['fght']["s0"]['f62'][0]) - parseInt(rslt['fght']["s0"]['f62'][1]))};
							} else {defmight += 0;}
						}
					}
				}
			}
			m+='<TR><TD colspan=4>Might Lost: '+addCommas(defmight)+'</td></tr>';
			m+='<TR><TD colspan=4>Rounds: ' + rslt['rnds'] + '</TD></TR>';
			if (rslt['fght']["s0"]) {
				if (rslt.overwhelmed) {
					m+='<TR><TH></TH><TH align=left>Troops</TH><TH align=center>Fought</TH><TH align=center>Survived</TH><TH align=center>Killed</TH></TR>';
					for (var i=1;i<14;i++) {
						if (rslt['fght']["s0"]['u'+i]) {
							m+='<TR><TD>' + unitImg[i] + '</td>';
							m+='<TD align=center>???</td>';
							m+='<TD align=center>???</td>';
								if(rslt['fght']["s0"]['u'+i][0] > 0) {
									m+='<TD align=center><FONT color="#CC0000">('+addCommas(rslt['fght']["s0"]['u'+i][0])+')</FONT></td></tr>';
								} else {
									m+='<TD align=center>0</td></tr>';
								}
						}
					}
					for (var i=53;i<=55;i++) {
						if (rslt['fght']["s0"]['f'+i]) {
							m+='<TR><TD>' + unitImg[i] + '</td>';
							m+='<TD align=center>???</td>';
							m+='<TD align=center>???</td>';
								if(rslt['fght']["s0"]['f'+i][0] > 0) {
									m+='<TD align=center><FONT color="#CC0000">('+addCommas(rslt['fght']["s0"]['f'+i][0])+')</FONT></td></tr>';
								} else {
									m+='<TD align=center>0</td></tr>';
								}
						}
					}
					for (var i=60;i<=63;i++) {
						if (rslt['fght']["s0"]['f'+i]) {
							m+='<TR><TD>' + unitImg[i] + '</td>';
							m+='<TD align=center>???</td>';
							m+='<TD align=center>???</td>';
								if(rslt['fght']["s0"]['f'+i][0] > 0) {
									m+='<TD align=center><FONT color="#CC0000">('+addCommas(rslt['fght']["s0"]['f'+i][0])+')</font></td></tr>';
								} else {
									m+='<TD align=center>0</td></tr>';
								}
							
						}
					}
				} else {
					m+='<TR><TH></TH><TH align=left>Troops</TH><TH align=center>Fought</TH><TH align=center>Survived</TH><TH align=center>Killed</TH></TR>';
					for (var i=1;i<14;i++) {
						if (rslt['fght']["s0"]['u'+i]) {
							if (rslt['fght']["s0"]['u'+i][0] > rslt['fght']["s0"]['u'+i][1]) {
								m+='<TR><TD>' + unitImg[i] + '</td>';
								m+='<TD align=center>'+addCommas(rslt['fght']["s0"]['u'+i][0])+'</td>';
								m+='<TD align=center><FONT color="#CC0000">'+addCommas(rslt['fght']["s0"]['u'+i][1])+'</FONT></td>';
								m+='<TD align=center><FONT color="#CC0000">('+addCommas((rslt['fght']["s0"]['u'+i][0]) - (rslt['fght']["s0"]['u'+i][1]))+')</FONT></td></tr>';
							} else {
								m+='<TR><TD>' + unitImg[i] + '</td>';
								m+='<TD align=center>'+addCommas(rslt['fght']["s0"]['u'+i][0])+'</td>';
								m+='<TD align=center>'+addCommas(rslt['fght']["s0"]['u'+i][1])+'</td></tr>';
							}
						}
					}
					for (var i=53;i<=55;i++) {
						if (rslt['fght']["s0"]['f'+i]) {
							if (rslt['fght']["s0"]['f'+i][0] > rslt['fght']["s0"]['f'+i][1]) {
								m+='<TR><TD>' + unitImg[i] + '</td>';
								m+='<TD align=center>'+addCommas(rslt['fght']["s0"]['f'+i][0])+'</td>';
								m+='<TD align=center><FONT color="#CC0000">'+addCommas(rslt['fght']["s0"]['f'+i][1])+'</font></td>';
								m+='<TD align=center><FONT color="#CC0000">('+addCommas((rslt['fght']["s0"]['f'+i][0]) - (rslt['fght']["s0"]['f'+i][1]))+')</FONT></td></tr>';
							} else {
								m+='<TR><TD>' + unitImg[i] + '</td>';
								m+='<TD align=center>'+addCommas(rslt['fght']["s0"]['f'+i][0])+'</td>';
								m+='<TD align=center>'+addCommas(rslt['fght']["s0"]['f'+i][1])+'</td></tr>';
							}
						}
					}
					for (var i=60;i<=63;i++) {
						if (rslt['fght']["s0"]['f'+i]) {
							if (rslt['fght']["s0"]['f'+i][0] > rslt['fght']["s0"]['f'+i][1]) {
								m+='<TR><TD>' + unitImg[i] + '</td>';
								m+='<TD align=center>'+addCommas(rslt['fght']["s0"]['f'+i][0])+'</td>';
								m+='<TD align=center><FONT color="#CC0000">'+addCommas(rslt['fght']["s0"]['f'+i][1])+'</font></td>';
								m+='<TD align=center><FONT color="#CC0000">('+addCommas((rslt['fght']["s0"]['f'+i][0]) - (rslt['fght']["s0"]['f'+i][1]))+')</FONT></td></tr>';
							} else {
								m+='<TR><TD>' + unitImg[i] + '</td>';
								m+='<TD align=center>'+addCommas(rslt['fght']["s0"]['f'+i][0])+'</td>';
								m+='<TD align=center>'+addCommas(rslt['fght']["s0"]['f'+i][1])+'</td></tr>';
							}
						}
					}
				}
			} else
				m+='<TR><TD>No Troops Defended</TD></TR>';



			if (rslt['fght']["s0"]) {
				m+='<TR><TD colspan=4> </TD></TR>';
				m+='<TR><TD colspan=4> </TD></TR>';
				m+='<TR><TD colspan=4><b>Unit Stats:</b></TD></TR>';
				for (var i=1;i<14;i++) {
					if (rslt['fght']["s0"]['u'+i]) {
						m+='<TR><TD>' + unitImg2[i] + '<font size="1"><b>HP: </b>'+addCommas(rslt['bonus']['mod']['s0']['u'+i]['hp'][1])+'<b>     Atk: </b>'+addCommas(rslt['bonus']['mod']['s0']['u'+i]['atk'][1])+'</font></td>';
						m+='<TD align=left><font size="1"><b>Def: </b>'+addCommas(rslt['bonus']['mod']['s0']['u'+i]['def'][1])+'</font></td>';
						m+='<TD align=left><font size="1"><b>Spd: </b>'+addCommas(rslt['bonus']['mod']['s0']['u'+i]['spd'][1])+'</font></td>';
						m+='<TD align=left><font size="1"><b>Rng: </b>'+addCommas(rslt['bonus']['mod']['s0']['u'+i]['rng'][1])+'</font></td></tr>';
					}
				}
				for (var i=53;i<=55;i++) {
					if (rslt['fght']["s0"]['f'+i]) {
						m+='<TR><TD>' + unitImg2[i] + '<font size="1"><b>HP: </b>'+addCommas(rslt['bonus']['mod']['s0']['f'+i]['hp'][1])+'<b>     Atk: </b>'+addCommas(rslt['bonus']['mod']['s0']['f'+i]['atk'][1])+'</font></td>';
						m+='<TD align=left><font size="1"><b>Def: </b>'+addCommas(rslt['bonus']['mod']['s0']['f'+i]['def'][1])+'</font></td>';
						m+='<TD align=left><font size="1"><b>Spd: </b>'+addCommas(rslt['bonus']['mod']['s0']['f'+i]['spd'][1])+'</font></td>';
						m+='<TD align=left><font size="1"><b>Rng: </b>'+addCommas(rslt['bonus']['mod']['s0']['f'+i]['rng'][1])+'</font></td></tr>';
					}
				}
				for (var i=60;i<=63;i++) {
					if (rslt['fght']["s0"]['f'+i]) {
						m+='<TR><TD>' + unitImg2[i] + '<font size="1"><b>HP: </b>'+addCommas(rslt['bonus']['mod']['s0']['f'+i]['hp'][1])+'<b>     Atk: </b>'+addCommas(rslt['bonus']['mod']['s0']['f'+i]['atk'][1])+'</font></td>';
						m+='<TD align=left><font size="1"><b>Def: </b>'+addCommas(rslt['bonus']['mod']['s0']['f'+i]['def'][1])+'</font></td>';
						m+='<TD align=left><font size="1"><b>Spd: </b>'+addCommas(rslt['bonus']['mod']['s0']['f'+i]['spd'][1])+'</font></td>';
						m+='<TD align=left><font size="1"><b>Rng: </b>'+addCommas(rslt['bonus']['mod']['s0']['f'+i]['rng'][1])+'</font></td></tr>';
					}
				}
			}


			if (rslt['s0ThroneRoomBoosts']) {
				m+='<TR><TD colspan=4> </TD></TR>';
				m+='<TR><TD colspan=4><b>Throne Room Bonuses:</b></TD></TR>';
				for (var i=1;i<99;i++) {
					if (rslt['s0ThroneRoomBoosts'][i]) {
						m+='<TR><TD colspan=4>' + trEffect[i] +': ' + rslt['s0ThroneRoomBoosts'][i] + '%</TD></TR>';
					}
				}

			}

			m+='</TABLE></TD></TR></TABLE>';
		}

		m+='</DIV>';
		t.popReport.getMainDiv().innerHTML = m;
		t.popReport.getTopDiv().innerHTML = '<DIV align=center><B>'+rpt.marchName+' Report</B></DIV>';
		t.popReport.show(true);
	},
	
};

/********************** Tournament Tab *******************************************/

// useless :( ......
/***/

/***
RSLT:
  (string) s0Kid = 57526
  (string) s1Kid = 35216
  (string) s1KLv = 1
  (number) s0KCombatLv = 0
  (string) s1KCombatLv = Higher
  (object) fght = [object Object]
    (object) s1 = [object Object]
      (array) u2 = 89000,89000
        (string) 0 = 89000
        (number) 1 = 89000

      (array) u9 = 1000,1000
        (string) 0 = 1000
        (number) 1 = 1000


  (number) rnds = 3
  (number) winner = 1
  (number) wall = 100
  (number) s0atkBoost = 0
  (number) s0defBoost = 0
  (number) s1atkBoost = 0
  (number) s1defBoost = 0.2
  (boolean) conquered = false
  (array) loot = 111139,763000,643000,78000,138000
    (number) 0 = 111139
    (number) 1 = 763000
    (number) 2 = 643000
    (number) 3 = 78000
    (number) 4 = 138000

  (string) errorMsg = Something has gone wrong! Please try again, or refresh if this message reappear
***/

Tabs.Tournament = {
  tabOrder : 100,
  cont:null,
  displayTimer : null,
 
init : function (div){
	var t = Tabs.Tournament;
	t.cont = div;
},

hide : function (){
	var t = Tabs.Tournament;
	clearTimeout (t.displayTimer);
},
getContent : function (){
	var t = Tabs.Tournament;
	return t.cont;
},
show : function () {
	var t = Tabs.Tournament;
	t.cont.style.overflowY = 'auto';
	t.cont.style.maxHeight = '650px';
  clearTimeout (t.displayTimer);
  t.cont.innerHTML = "<div class='tourny_modal_upsell'></div>";
  var mhtl = "<DIV class=ptstat>POPULATION AND PRODUCTION INFORMATION</div><table width=100% class=pdxTab><tr><td colspan=8>&nbsp;</td></tr><tr><td></td>";
  for(var i=0; i<Cities.numCities; i++) {
   mhtl += "<TD align=center valign=bottom width=60px><B>" + Cities.cities[i].name + "</B></TD>";
  }
  mhtl += "</tr><tr><td><img height=18 src=http://koc-power-pdx.googlecode.com/svn/trunk/img/troops/unit_2_50_s34.jpg title=Militiaman> Militiaman/h</td>";
  var temps=[];
  for(var i=0; i<Cities.numCities; i++) {
   temps[i]=((Cities.cities[i]['Troop2Time'] > 0)?(3600 / Cities.cities[i]['Troop2Time']):0);
   mhtl += "<td>" + addCommas(parseInt(temps[i])) +"</td>";
  }
    mhtl += "</tr><tr><td><img height=18 src=https://kabam1-a.akamaihd.net/kingdomsofcamelot/fb/e2/src/img/population_40.png title=Population> Population/h</td>";
	var pop=[];
  for(var i=0; i<Cities.numCities; i++) {
   cityID = 'city'+ Cities.cities[i].id;
   pop[i] =  parseInt(Seed.citystats[cityID]["pop"][1]) / 2;
   mhtl += "<td>" + addCommas(parseInt(pop[i])) +"</td>";
  }
  mhtl += "</tr><tr><td><b>Difference</b></td>";
  var diff=0;
  for(var i=0; i<Cities.numCities; i++) {
   diff = parseInt(pop[i] - temps[i]);
   var couleur=" style='font-color:green' ";
   if (diff<0) couleur=" style='background-color:red' ";
   mhtl += "<td "+couleur+"><b>" + addCommas(parseInt(diff)) +"</b></td>";
  }
  
   mhtl += "</tr><tr><td><img height=18 src=https://kabam1-a.akamaihd.net/kingdomsofcamelot/fb/e2/src/img/happiness.png title=happiness> happiness</td>";
   for(var i=0; i<Cities.numCities; i++) {
   cityID = 'city'+ Cities.cities[i].id;
   var bon = parseInt(Seed.citystats[cityID]["pop"][2]); 
   var bonc = "red";
   if (bon>99) bonc="green";
   mhtl += "<td style='background-color:"+bonc+"'><center><b>"+bon+"</td>";
  }
  var now = unixTime();
  mhtl += "</tr><tr><td><b>Queue</b></td>";
    for(var i=0; i<Cities.numCities; i++) {
     cityID = 'city'+ Cities.cities[i].id;
     var totTime = 0;
     var q = Seed.queue_unt[cityID]; 
     if (q!=null && q.length>0)
         totTime = q[q.length-1][3] - now;
     if (totTime < 0) totTime = 0;
     if (totTime < 3600)
      var bonc="style='background-color:red'";
     else
      var bonc="";
     mhtl += "<td "+bonc+"><center><b>"+timestr(totTime)+"</td>";
    }
    
  mhtl += "</tr></table><br>";
  t.cont.innerHTML += mhtl;
  var params = unsafeWindow.Object.clone(unsafeWindow.g_ajaxparams);
  params.format=2;
  params.tournyPos=0;
  new AjaxRequest(unsafeWindow.g_ajaxpath+"ajax/getLeaderboard.php"+unsafeWindow.g_ajaxsuffix, {  method:"post",  parameters:params,
  
  onSuccess:function(transport){
   var rslt=eval("("+transport.responseText+")");
   if(rslt.ok){
   
    if(!rslt.data){
	   
	t.cont.innerHTML +="<div class=ptstat>TOURNAMENT CHECK</div><div class='tourny_modal_upsell'><br><center><b>"+unsafeWindow.g_js_strings.modal_tourny_changetab.notourny+"</b></center></div>";
	  
	  
    }else{ //  rslt.data
     var tournyhtml=new Array();
     
     if(rslt.name){
	    tournyhtml.push("<div class=ptstat><center>"+rslt.name.replace('The Tournament of Might','THE TOURNAMENT OF MIGHT')+"</center></div>")
     }  else{
	    tournyhtml.push("<div class='tournymodaltitle'><center>"+unsafeWindow.g_js_strings.commonstr.tournament+"</div>")
     }
	   tournyhtml.push("<div>");
	   
	   
	   
	   if(rslt.startdate&&rslt.enddate){
	   	   	    var startTime=rslt.startdate;
	   	   	    var endTime=rslt.enddate;
	   	   	    var now=parseInt(new Date().getTime()/1000);
	   	   	    tournyhtml.push("<table width=100% align=center class=pbTab><tr bgcolor=#FE8888><td width=40%><b>Starts</td><td width=40%><b>Ends</td><td width=20%><b>Ends</td></tr>");
	   	   	    dt = new Date ();
	   	            dt.setTime (startTime * 1000);
	   	            dtf = new Date ();
	   	            dtf.setTime (endTime * 1000);
	   	           
	   	            var restant = endTime - now; 
	   	            
	   	   	   
	   	   	   tournyhtml.push("<tr><td>");
	   	   	     tournyhtml.push("" + dt.toLocaleDateString() + " - "+ dt.toLocaleTimeString());
	   	   	    tournyhtml.push("</td><td>");
	   	   	    tournyhtml.push("" + dtf.toLocaleDateString()+ " - "+ dtf.toLocaleTimeString());
	   	   	    tournyhtml.push("</td><td>"+timestr(restant,1)+"</td></tr></table>");
	   	     tournyhtml.push("<br>");
	   
	   }
	   
	
	   tournyhtml.push("<center><table class='tourny_list_table' cellpadding='0' cellspacing='0' border='0' width=90% style='margin:5px'>");
	   tournyhtml.push("<thead>");
	   tournyhtml.push("<tr>");
     if(rslt.type==24){
	    tournyhtml.push("<td class='rankcol' style='background-color:red'>");
	    tournyhtml.push("<div><input type=button id='BOTournoiPM' value='-'>&nbsp;"+unsafeWindow.g_js_strings.commonstr.ranking+"</div>");
	    tournyhtml.push("</td>");
	    tournyhtml.push("<td  style='background-color:red'>");
	    tournyhtml.push("<div>Chancellor</div>");
	    tournyhtml.push("</td>");
	    tournyhtml.push("<td  style='background-color:red'>");
	    tournyhtml.push("<div>"+unsafeWindow.g_js_strings.commonstr.alliance+"</div>");
	    tournyhtml.push("</td>");
	    tournyhtml.push("<td  style='background-color:red'>");
	    tournyhtml.push("<div>"+unsafeWindow.g_js_strings.modal_tourny_changetab.mightgained+"</div>");
	    tournyhtml.push("</td  style='background-color:red'>");
	    tournyhtml.push("<td  style='background-color:red'> ");
	    tournyhtml.push("<div>"+unsafeWindow.g_js_strings.modal_tourny_changetab.rewardperplayer+"</div>");
	    tournyhtml.push("</td>")
      }else{
            tournyhtml.push("<td	class='rankcol' style='background-color:red'>");
	    tournyhtml.push("<div><input type=button id='BOTournoiPM' value='-'>&nbsp;"+unsafeWindow.g_js_strings.commonstr.ranking+"</div>");
	    tournyhtml.push("</td>");
	    tournyhtml.push("<td  style='background-color:red'>");
	    tournyhtml.push("<div>Player</div>");
	    tournyhtml.push("</td>");
	    tournyhtml.push("<td  style='background-color:red'>");
	    tournyhtml.push("<div>"+unsafeWindow.g_js_strings.commonstr.alliance+"</div>");
	    tournyhtml.push("</td>");
	    tournyhtml.push("<td  style='background-color:red'>");
	    tournyhtml.push("<div>"+rslt.contestcategory+"</div>");
	    tournyhtml.push("</td>");
	    tournyhtml.push("<td  style='background-color:red'>");
	    tournyhtml.push("<div>"+unsafeWindow.g_js_strings.commonstr.reward+"</div>");
	    tournyhtml.push("</td>")
     }
	   tournyhtml.push("</tr>");
	   tournyhtml.push("</thead>");
	   tournyhtml.push("</tbody>");
	   var nb=rslt.data.length;
	   var votrepuissance = 0;
	   for(var i=0;i<rslt.data.length;i++){
	    var row=rslt.data[i];
	    if(rslt.type==24){ // Tournament
	     if (getMyAlliance()[1] == row.alliance) {
	      votrepuissance=row.contestValue;
	      break;
	     }
	    } else {
	     if (Seed.player.prefix + ' '+ Seed.player.name == row.name ) {
	      votrepuissance=row.contestValue;
	      break;
	     }	
	    }
	   }
	   for(var i=0;i< Options.TournoiLigne;i++){
	    var row=rslt.data[i];
	    var rewardString=row.itemCount+" ";
	    if(row.itemType==0){
	     rewardString+=unsafeWindow.g_js_strings.commonstr.gems;
	    }else{
	     rewardString+=unsafeWindow.itemlist["i"+row.itemType].name;
	    }
	    var couleur="";
	    if(rslt.type==24){ //Alliance Tournament
	     if (getMyAlliance()[1] == row.alliance) {
	      couleur=" style='background-color:#FF0000' ";
	     }
	    }else{
	     if (Seed.player.prefix + ' '+ Seed.player.name == row.name ) {
	      couleur=" style='background-color:#FF0000' ";
	     }
	    }
	    if(i%2==1){
	     tournyhtml.push("<tr>")
	    }else{
	     tournyhtml.push("<tr class='stripe'>")
	    }
	    tournyhtml.push("<td class='rankcol' "+couleur+">");
	    tournyhtml.push("<div><b>"+row.ranking+"</b></div>");
	    tournyhtml.push("</td>");
	    tournyhtml.push("<td "+couleur+">");
	    tournyhtml.push("<div>"+row.name+"</div>");
	    tournyhtml.push("</td>");
	    tournyhtml.push("<td "+couleur+">");
	    tournyhtml.push("<div>"+(row.alliance||"----")+"</div>");
	    tournyhtml.push("</td>");
	    tournyhtml.push("<td "+couleur+">");
	    tournyhtml.push("<div>"+addCommas(row.contestValue));
	    if (votrepuissance>0) {
	      var ecartavecvous = parseInt(row.contestValue - votrepuissance);
	      if (ecartavecvous>0) {
	       tournyhtml.push("&nbsp;(+ " + addCommas(ecartavecvous) +")");
	      } 
	      if (ecartavecvous<0) {
	       tournyhtml.push("&nbsp;(" + addCommas(ecartavecvous) +")");
	      }
	    }
	    tournyhtml.push("</div>");
	    tournyhtml.push("</td>");
	    tournyhtml.push("<td "+couleur+">");
	    tournyhtml.push("<div>"+rewardString+"</div>");
	    tournyhtml.push("</td>");
	    tournyhtml.push("</tr>")
	   } // fin du for
	
	      if(rslt.type!=24){

	    for(var i= Options.TournoiLigne;i<rslt.data.length;i++){
	   	    var row=rslt.data[i];
	   	 
	   	    if (Seed.player.prefix + ' '+ Seed.player.name == row.name ) {
	   	      var rewardString=row.itemCount+" ";
	   	     	    if(row.itemType==0){
	   	     	     rewardString+=unsafeWindow.g_js_strings.commonstr.gems;
	   	     	    }else{
	   	     	     rewardString+=unsafeWindow.itemlist["i"+row.itemType].name;
	   	     	    }
	   	     	    tournyhtml.push("<tr class='stripe' >")
	   	     	    tournyhtml.push("<td class='rankcol' style='background-color:#FF0000'>");
	   	     	    tournyhtml.push("<div><b>"+row.ranking+"</b></div>");
	   	     	    tournyhtml.push("</td>");
	   	     	    tournyhtml.push("<td style='background-color:#FF0000'>");
	   	     	    tournyhtml.push("<div>"+row.name+"</div>");
	   	     	    tournyhtml.push("</td>");
	   	     	    tournyhtml.push("<td style='background-color:#FF0000'>");
	   	     	    tournyhtml.push("<div>"+(row.alliance||"----")+"</div>");
	   	     	    tournyhtml.push("</td>");
	   	     	    tournyhtml.push("<td style='background-color:#FF0000'>");
	   	     	    tournyhtml.push("<div>"+addCommas(row.contestValue)+"</div>");
	   	     	    tournyhtml.push("</td>");
	   	     	    tournyhtml.push("<td style='background-color:#FF0000'>");
	   	     	    tournyhtml	.push("<div>"+rewardString+"</div>");
	   	     	    tournyhtml.push("</td>");
	   	            tournyhtml.push("</tr>")
	   	   }    
	   }
	   }
	   tournyhtml.push("</tbody>");
	   tournyhtml.push("</table>");
      tournyhtml.push("</div>");
      t.cont.innerHTML += tournyhtml.join("");      
           document.getElementById('BOTournoiPM').addEventListener ('click', function() { 
            var lg=rslt.data.length;
            if (rslt.type!=24) lg=25;
            t.plusmoins(lg);
           }, false);      
           
        if ((Options.TournoiLigne==5 && rslt.type!=24) || (Options.TournoiLigne==5 && rslt.type==24)) {
	        document.getElementById('BOTournoiPM').value="Maximize";
	    } else {
	        document.getElementById('BOTournoiPM').value="Minimize";           
        }
          } // fin rslt.data 
         } else {
            t.cont.innerHTML = "<div class='tourny_modal_upsell'><center>No Info</div>";
         }
       }, onFailure:function()  {
         t.cont.innerHTML = "<div class='tourny_modal_upsell'><center>No Info</div>";
       }
   });
   t.displayTimer = setTimeout (t.show, 240000);       
  },
  plusmoins: function(lg) {
   var t = Tabs.Tournament;
   if (document.getElementById('BOTournoiPM').value=="Maximize") {
     document.getElementById('BOTournoiPM').value="Minimize";
     Options.TournoiLigne = lg;
   } else {
     document.getElementById('BOTournoiPM').value="Maximize";
     Options.TournoiLigne = 5;
   }
   saveOptions();
   clearTimeout (t.displayTimer);
   t.show();
  },  

/*
checktourney: function() {
 var t = Tabs.Tournament;
  var params = unsafeWindow.Object.clone(unsafeWindow.g_ajaxparams);
params.format=2;
params.tournyPos=0;
new AjaxRequest(unsafeWindow.g_ajaxpath+"ajax/getLeaderboard.php"+unsafeWindow.g_ajaxsuffix, {  
  method:"post",  parameters:params,
	  
onSuccess:function(transport){
var rslt=eval("("+transport.responseText+")");
if(rslt.name){
 var t = Tabs.Tournament;
   AddTowerTab('Turnier', t.showTournament, 10);
};		  
},
   });	  
},
showTournament: function() {
//      Options.currentTab = culang.tournament;   
//        saveOptions();
mainPop.show (true);
//		setTimeout(function(){document.getElementById('pbtc'+culang.tournament).e_clickedTab}, 3000);
//  tabManager.e_clickedTab(e);
},
*/
}

/*************** WILDS TAB *********************/

var wildNames = {
   0: 'Bog',
  10: 'Grassland',
  11: 'Lake',
  20: 'Woods',
  30: 'Hills',
  40: 'Mountain',
  50: 'Plain',
};

var mercNames = {
  0: 'None',
  1: 'Novice',
  2: 'Intermediate',
  3: 'Veteran',
};

Tabs.Wilds = {
  tabOrder : 35,
  tabLabel : 'Wilds',

  cont : null,
//  state : null,
  upGoldTimer : null,
  wildList : [],
  buildList : {},
  
  init : function (div){
    var t = Tabs.Wilds;
    t.cont = div;
    uW.ptButMaxTraps = t.e_butMaxTraps;
    uW.ptInpWildTraps = t.e_inpTraps;
    uW.ptButWildSet = t.e_butWildSet;
    uW.ptButAbandon = t.e_abandon;
    t.cont.innerHTML = '<DIV id=wildContent style="maxheight:700px; height:700px; overflow-y:auto">';
//    t.show ();
  },

  hide : function (){
    var t = Tabs.Wilds;
    clearTimeout (t.upGoldTimer);
  },
  
  show : function (){
    var t = Tabs.Wilds;
    clearTimeout (t.upGoldTimer);
    
    m = '<CENTER>'+ strButton20('RESET', 'id=ptwref') +'</center><TABLE cellspacing=0 cellpadding=0 class=ptTabPad align=center>';
    for (var c=0; c<Cities.numCities; c++){
      var city = Cities.cities[c];
      var cWilds = Seed.wilderness['city'+city.id];
      t.wildList[c] = []; 
      var castle = parseInt(Seed.buildings['city'+ city.id].pos0[1]);
      if(castle == 11) castle = 12;
      else if(castle == 12) castle = 14;
      var totw = 0;
      if (matTypeof(cWilds)=='object'){
        for (var k in cWilds)
          ++totw;
      }       
	  m += '<TD width = "100px" ; border:none"><a href="http://code.google.com/p/koc-power-tools/wiki/HowToWilds" target="_blank">HELP</a></td></tr>';
      m += '<TR><TD colspan=20><DIV class=ptstat><TABLE class=ptNoPad width=100%><TR><TD width=100></td><TD width=90% align=center>'+ city.name 
        +' &nbsp; ('+ city.x +','+ city.y +')</td><TD width=100 align=right>Wilds: '+ totw +' of '+ castle +' &nbsp; </TD></tr></table></div></td></tr>';
      var row = 0;  
      var sortem = [];

      if (matTypeof(cWilds) != 'array') {
        m += '<TR style="background-color:white; font-weight:bold;" align=right><TD align=left>Wild Type</td><TD></td><TD align=left>Coords</td><TD>Traps</td><TD align=left>Mercs</td><TD>Abandon</td>\
         <TD width=15></td><TD colspan=3 class=entry>'+ htmlTitleLine(' CHANGE DEFENSES ') +'</td></tr>';
        for (var k in Seed.wilderness['city'+city.id])
          sortem.push (Seed.wilderness['city'+city.id][k]);
        sortem.sort (function (a,b){
          var x; if ((x = b.tileLevel-a.tileLevel)!=0) 
            return x; 
          return a.tileType-b.tileType;
        });
        for (i=0; i<sortem.length; i++){
          var wild = sortem[i]; 
          var wildDef = Seed.wildDef['t'+wild.tileId];
          if (wildDef==undefined || !wildDef)
            wildDef = {fort60Count:0, mercLevel:0};
          var maxTraps = parseInt(wild.tileLevel)*100;
          var maxBuild = maxTraps - parseInt(wildDef.fort60Count);
          t.wildList[c][i] = [wild.tileId, maxBuild];          
          //
          m += '<TR align=right'+ (row++%2?'':' class=ptOddrow') +'><TD align=left>'+ wildNames[wild.tileType] +'</td>\
            <TD>'+ wild.tileLevel +'</td><TD align=center><A onclick="ptGotoMap('+ wild.xCoord +','+ wild.yCoord +')">'+ wild.xCoord +','+ wild.yCoord +'</a></td>\
            <TD align=right><B>'+ wildDef.fort60Count +'</b></td><TD align=center><B>'+ mercNames[wildDef.mercLevel] +'</b></td><TD align=center>'+strButton14('Abandon', 'onclick="ptButAbandon('+wild.tileId+','+wild.xCoord+','+wild.yCoord+','+city.id+ ')" id=tileId_'+wild.tileId) + '</td>\
            <TD></td><TD align=left class=ptentry><B>Build Traps:</b> <INPUT onchange="ptInpWildTraps(this)" id=ptwt_'+ c +'_'+ i 
              + (maxBuild==0?' DISABLED ':'')+' style="margin:0px; padding:0px" type=text size=3 maxlength=4></td>'
          if (wildDef.fort60Count < maxTraps)
            m += '<TD class=ptentry style="padding:0px">'+ strButton14('Max', 'id=ptwx_'+ c +'_'+ i +' onclick="ptButMaxTraps(this)"') +'</td>';
          else
            m += '<TD class=ptentry></td>';
          m += '<TD class=ptentry> &nbsp; &nbsp; <B>Mercs:</b> ' + htmlSelector(mercNames, wildDef.mercLevel, 'id=ptwm_'+ c +'_'+ i) +' &nbsp; &nbsp; </td></tr>';
        }
        m += '<TR><TD colspan=6></td><TD></td><TD class=ptentry align=center colspan=3><TABLE><TR><TD width=40% align=left>Cost: <SPAN id=ptwgc_'+ c +'>0</span></td>\
            <TD width=10%>'+ strButton20("SET DEFENSES", 'onclick="ptButWildSet('+ c +')"') +'<TD width=40% align=right>Gold: <SPAN id=ptwgt_'+ c +'>0</span></td></td></tr></table></td></tr>';
      } else {
        m+= '<TR><TD colspan=9> &nbsp; </td></tr>';
      }         
    }
    document.getElementById('wildContent').innerHTML = m + '</table></div>';
    document.getElementById('ptwref').addEventListener ('click', t.show, false);
    t.updateGold ();
  },
  
  e_abandon:function(tileId,xCoord,yCoord,cityId){
  	var t = Tabs.Wilds;
  	var params = uW.Object.clone(uW.g_ajaxparams);
    params.tid = tileId;
    params.x = xCoord;
    params.y = yCoord;
    params.cid = cityId; 
    new MyAjaxRequest(uW.g_ajaxpath + "ajax/abandonWilderness.php" + uW.g_ajaxsuffix, {
    	method: "post",
    	parameters: params,
    	onSuccess: function (rslt) {
    		if (rslt.ok){
   				delete Seed.wilderness["city"+cityId]["t" + tileId];
   				t.show();
    			if (rslt.updateSeed){
    				uW.update_seed(rslt.updateSeed);
    			}
    		}
    	},  
    	onFailure: function () {},
    });
  },

  e_butWildSet : function (c){
    var t = Tabs.Wilds;
    var totTraps = 0;  
    var cid = Cities.cities[c].id;
    t.buildList = {cityId:cid, list:[]};
          
    for (var w=0; w<t.wildList[c].length; w++){
      var wild = Seed.wilderness['city'+cid]['t'+t.wildList[c][w][0]]; 
      var wildDef = Seed.wildDef['t'+t.wildList[c][w][0]];
// TODO: Seed.wildDef is null if just aquired 
if (wildDef==undefined || !wildDef)
  wildDef = {fort60Count:0, mercLevel:0};
    
      var numTraps = parseInt(document.getElementById('ptwt_'+ c +'_'+ w).value, 10);
      if (isNaN(numTraps))
        numTraps = 0;
      totTraps += numTraps;
      if (numTraps > 0)
        t.buildList.list.push (['T', wild.tileId, numTraps]);
      var mercId =document.getElementById('ptwm_'+ c +'_'+ w).value; 
      if (wildDef.mercLevel != mercId)
        t.buildList.list.push (['M', wild.tileId, mercId, wildDef.mercLevel]);
    }

    var totCost = totTraps * 200; 
    if (totCost > parseInt(Seed.citystats['city'+cid].gold[0])){
      document.getElementById('ptwgc_'+ c).innerHTML = '<SPAN class=boldRed>'+ addCommasInt(totCost) +'</span>';
      return; 
    }
    if (t.buildList.list.length == 0)
      return;
    t.setCurtain (true);
    var popDiv = t.setPopup (true);
    popDiv.innerHTML = '<TABLE class=ptTab width=100% height=100%><TR><TD>\
          <DIV class=ptstat>Setting Wilderness Defenses</div>\
          <DIV id=ptWildBuildDiv class=ptDiv style="padding:10px; height:225px; max-height:225px; overflow-y:auto"></div>\
          </td></tr><TR><TD align=center>'+ strButton20('CANCEL', 'id=ptWildCancel') +'</td></tr></table>';
    document.getElementById('ptWildCancel').addEventListener('click', t.e_buildCancel, false);
    t.processQue(null);  
  },
  
  e_buildCancel : function (){
    var t = Tabs.Wilds;
    t.setCurtain(false);
    t.setPopup(false);
    t.show();
  },
  
  processQue : function (errMsg){
    var t = Tabs.Wilds;
    var what = t.buildList.list.shift();
    var div = document.getElementById('ptWildBuildDiv');
    if (what==null || errMsg){
      if (errMsg)
        div.innerHTML += '<BR><SPAN style="white-space:normal;" class=boldRed>ERROR: '+ errMsg +'</span>';
      else
        div.innerHTML += 'Done.<BR>';
      document.getElementById('ptWildCancel').firstChild.innerHTML = 'CLOSE'; 
      return;
    }
    if (div.innerHTML != '')
      div.innerHTML += 'Done.<BR>';
    var wild = Seed.wilderness['city'+ t.buildList.cityId]['t'+what[1]];
    if (what[0] == 'T'){
      div.innerHTML += 'Building '+ what[2] +' traps for '+ Cities.byID[t.buildList.cityId].name +'\'s wilderness at '+ wild.xCoord +','+ wild.yCoord +' ... ';
      t.postBuyTraps (t.buildList.cityId, what[1], what[2], t.processQue);
    } else {
      div.innerHTML += 'Setting Mercenaries to '+ mercNames[what[2]] +' for '+ Cities.byID[t.buildList.cityId].name +'\'s wilderness at '+ wild.xCoord +','+ wild.yCoord +' ... ';
      t.postHireMercs (t.buildList.cityId, what[1], what[2], what[3], t.processQue);
    }
  },
  
  setPopup : function (onoff){
    var t = Tabs.Wilds;
    if (onoff){
      var div = document.createElement('div');
      div.id = 'ptWildPop';
      div.style.backgroundColor = '#fff';
      div.style.zindex = mainPop.div.zIndex+2;
      div.style.opacity = '1';
      div.style.border = '3px outset red';
      div.style.width = '550px';
      div.style.height = '300px';
      div.style.display = 'block';
      div.style.position = 'absolute';
      div.style.top = '100px';
      div.style.left = '100px';
      t.cont.appendChild (div);
      return div;
    } else {
      t.cont.removeChild (document.getElementById('ptWildPop'));
    }
  },

  setCurtain : function (onoff){
    var t = Tabs.Wilds;
    if (onoff){
      var off = getAbsoluteOffsets (t.cont);
      var curtain = document.createElement('div');
      curtain.id = 'ptWildCurtain';
      curtain.style.zindex = mainPop.div.zIndex+1;
      curtain.style.backgroundColor = "#000000";
      curtain.style.opacity = '0.5';
      curtain.style.width = t.cont.clientWidth +'px';
      curtain.style.height = t.cont.clientHeight +'px';
      curtain.style.display = 'block';
      curtain.style.position = 'absolute';
      curtain.style.top = off.top + 'px';
      curtain.style.left = off.left + 'px';
      t.cont.appendChild (curtain);
    } else {
      t.cont.removeChild (document.getElementById('ptWildCurtain'));
    }
  },
  
  e_butMaxTraps : function (e){
    var t = Tabs.Wilds;
    var c = e.id.substr(5,1);
    var w = e.id.substr(7);
    var inp = document.getElementById('ptwt_'+ c +'_'+ w);
    inp.value = t.wildList[c][w][1];
    t.e_inpTraps (inp);
  },
  
  e_inpTraps : function (e){
    var t = Tabs.Wilds;
    var c = e.id.substr(5,1);
    var w = e.id.substr (7);
    var tot = 0;
    for (var i=0; i<t.wildList[c].length; i++) {
      var val = parseInt(document.getElementById('ptwt_'+ c +'_'+ i).value, 10);
      if (isNaN(val))
        val = 0;
      tot += val;
    }  
    document.getElementById('ptwgc_'+ c).innerHTML = addCommasInt(tot * 200);
    if (isNaN(e.value) || e.value<0 || e.value>t.wildList[c][w][1]){
      e.value = '';
      e.style.backgroundColor = '#ffaaaa'; 
    } else
      e.style.backgroundColor = null; 
  },

  updateGold : function (){
    var t = Tabs.Wilds;
    for (var c=0; c<Cities.numCities; c++){
      var e = document.getElementById('ptwgt_'+ c +'');
      if (e)
        e.innerHTML = addCommasInt(Seed.citystats['city'+Cities.cities[c].id].gold[0]);
    }
    t.upGoldTimer = setTimeout (t.updateGold, 2000);
  },
  
  postBuyTraps : function (cid, tid, quant, notify){
    if (DISABLE_POST_DEFENSES){
      setTimeout (function (){notify(null)}, 1500);
      return;
    }
    var params = uW.Object.clone(uW.g_ajaxparams);
    params.cid = cid;
    params.tid = tid;
    params.quant = quant;
    new MyAjaxRequest(uW.g_ajaxpath + "ajax/buyWildTraps.php" + uW.g_ajaxsuffix, {
      method: "post",
      parameters: params,
      onSuccess: function (rslt) {
        if (rslt.ok){
          if (!Seed.wildDef["t"+ tid])
            Seed.wildDef["t"+ tid] = {tileId:tid, fort60Count:0, mercLevel:0};
          Seed.wildDef["t"+ tid].fort60Count = parseInt(Seed.wildDef["t"+ tid].fort60Count) + parseInt(quant);
        }  
        if (notify)
          notify (rslt.errorMsg);
      },
      onFailure: function () {
        if (notify)
          notify ('AJAX ERROR');
      },
    });
  },

  postHireMercs : function (cid, tid, newLevel, oldLevel, notify){
    if (DISABLE_POST_DEFENSES){
      setTimeout (function (){notify('OK, so it\'s not really an error, it\'s just George playing around to see how the error message looks. It\'s a long one, how does it fit? Is it OK? Are you sure? JANE! Get me off of this thing!')}, 1500);
      return;
    }
    var params = uW.Object.clone(uW.g_ajaxparams);
    params.cid = cid;
    params.tid = tid;
    params.lv = newLevel;
    params.olv = oldLevel;
    new MyAjaxRequest(uW.g_ajaxpath + "ajax/hireWildMerc.php" + uW.g_ajaxsuffix, {
      method: "post",
      parameters: params,
      onSuccess: function (rslt) {
        if (rslt.ok){
          if (!Seed.wildDef["t"+ tid])
            Seed.wildDef["t"+ tid] = {tileId:tid, fort60Count:0, mercLevel:0};
          Seed.wildDef["t"+ tid].mercLevel = newLevel;
        }
        if (notify)
          notify (rslt.errorMsg);
      },
      onFailure: function () {
        if (notify)
          notify ('AJAX ERROR');
      },
    });
  },
          
}    
 
   
/*************** KNIGHTS TAB *********************/
Tabs.Knights = {
  tabOrder : 30,
  tabLabel : uW.g_js_strings.commonstr.knight,
  cont : null,
  displayTimer : null,
  action : 0,

  init : function (div){
    var t = Tabs.Knights;
    t.cont = div;
    uW.ptAssignSkill = t.clickedAssignPoints;
    uW.ptAssignTunes = t.clickedAssignTune; 
    uW.ptButDismiss = t.postDismissKnight; 
    t.cont.innerHTML = '<STYLE>table.ptTabPad tr.ptwpad {background-color:#ffffff; padding-left:15px}</style>\
       <DIV id=ptknightdiv style="max-height:736px; height:736px; max-width:745px; width:745px; overflow-y:auto">';
  },

  hide : function (){
    var t = Tabs.Knights;
    clearTimeout (t.displayTimer);
  },

  show : function (){
    var t = Tabs.Knights;
	clearTimeout (t.displayTimer);
    
    function _dispKnight (roleId, knight, numcid){
      var rid = roleId;
      if (roleId==null)
        rid = 1;
      var sty='';  
      if (row++ % 2)
        sty = 'class=ptOddrow ';        
      m = '<TR '+ sty +'valign=top align=right><TD><B>'+ (roleId==null ? '':knightRoles[rid][0]) +'</b></td><TD align=left>';
      if (knight == null) {
        m += '--------</td><TD colspan=4></td><TD class=ptentry colspan=5></td><TD colspan=2></td></tr>';
      } else {
        var level = parseInt(Math.sqrt(parseInt(knight.experience) / 75)) + 1;
        var unpoints = level - parseInt(knight.skillPointsApplied);
        var salary = (parseInt(knight.skillPointsApplied) + 1) * 20;
        totSalary += salary;
        var ass = '';
        if (knight.knightStatus == 10){
          ass = '<TD class=ptentry align=left colspan=4>Marching</td>';
        } else {  
          if (unpoints > 0){
            unpoints = '<SPAN class="boldRed">'+ unpoints +'</span>';
          for (var i=0; i<4; i++){
            var sty = 'padding-left:1px;';
            if (i == rid)   // bold it
              sty += 'font-weight:bold;color:#116654';
            if (t.action==2) {   
	          t.clickedAssignPoints(null,cid,knight.knightId,i);
            }
            if (t.action==1) {   
	      	  t.clickedAssignPoints(null,cid,knight.knightId,1);
            }
            ass += '<TD class=ptentry align=left style="'+ sty +'" ><A style="'+ sty +'" onclick="ptAssignSkill(this,' + cid +','+ knight.knightId +','+ i +')">['+ knightRoles[i][2] +'] &nbsp;</a></td>'; 
          }
          } 
          else
            ass = '<TD class=ptentry colspan=4></td>';
        }  
        var skills = [];
        for (var i=0; i<4; i++){
          if (i == rid)
            skills[i] = '<B>'+ knight[knightRoles[i][1]] +'</b>'; 
          else
            skills[i] = knight[knightRoles[i][1]]; 
        }
		
		var item211="0";
        var item221="0";
        var item231="0";
        var item241="0";
        if (Seed.items.i211) item211='<a onclick="citysel_click(document.getElementById(\'citysel_'+ (numcid+1)+'\'));setTimeout (function (){ boost_modal(1,'+ knight.knightId +');return false;}, 500);">'+Seed.items.i211+'</a>';
        if (Seed.items.i221) item221='<a onclick="citysel_click(document.getElementById(\'citysel_'+ (numcid+1)+'\'));setTimeout (function (){ boost_modal(2,'+ knight.knightId +');return false;}, 500);">'+Seed.items.i221+'</a>';
        if (Seed.items.i231) item231='<a onclick="citysel_click(document.getElementById(\'citysel_'+ (numcid+1)+'\'));setTimeout (function (){ boost_modal(3,'+ knight.knightId +');return false;}, 500);">'+Seed.items.i231+'</a>';
        if (Seed.items.i241) item241='<a onclick="citysel_click(document.getElementById(\'citysel_'+ (numcid+1)+'\'));setTimeout (function (){ boost_modal(4,'+ knight.knightId +');return false;}, 500);">'+Seed.items.i241+'</a>';
		
        m += '<a title="Assigner un role" onclick="citysel_click(document.getElementById(\'citysel_'+ (numcid+1)+'\'));setTimeout (function (){ assign_role_modal('+ knight.knightId +');return false;}, 500);">'+knight.knightName + '</td><TD>'+strButton14('Dismiss', 'onclick="ptButDismiss('+knight.knightId + ','+cid+')" id=tileId_') +'</td><TD>'+ skills[0] +' ('+item211+')</td><TD>'+ skills[1] +' ('+item221+')</td><TD>'+ skills[2] +' ('+item231+')</td><TD>' + skills[3] +' ('+item241+')</td><TD class=ptentry>'+ unpoints +'</td>'+ ass +'<TD><a title="EXP Boost" onclick="citysel_click(document.getElementById(\'citysel_'+ (numcid+1)+'\'));setTimeout (function (){  xpBoost_modal('+ knight.knightId +');return false; }, 500);">'+ level +'</a></td><td><a onclick="citysel_click(document.getElementById(\'citysel_'+ (numcid+1)+'\'));setTimeout (function (){ loyalBoost_modal('+ knight.knightId +');return false;}, 500);">'+knight.loyalty+'</a></td><TD>'+ addCommas(salary) +'</td></tr>';
      }
      return m;
    }          
    
    var totSalary = 0;
    var m = '<TABLE cellspacing=0 align=center class=ptTabPad><TBODY>';
	  m += '<TR><TD colspan=15><DIV class=ptstat>Knight Assign Methods - <input style="height:20px;font-size:9px;" type=button value="Add Default Skill" id="ptknight_def"><input style="height:20px;font-size:9px;" type=button value="Add Combat Skill" id="ptknight_com"></div></td></tr>';
    for (var c=0; c<Cities.numCities; c++) {
      var cid = Cities.cities[c].id;
      m += '<TR><TD colspan=15><DIV class=ptstat>'+ Cities.cities[c].name +'</div></td></tr>\
          <TR class=ptwpad style="font-weight:bold" align=right><TD width=70>Role</td><TD width=140 align=center>Name</td><TD widith=70>Dismiss</td><TD width=26>Pol</td><TD width=26>Com</td>\
          <TD width=26>Int</td><TD width=26>Res</td><TD width=90 align=center colspan=5>--- Unassigned ---</td><TD width=35>Level</td><td>Loyalty</td><TD width=40 align=right> Salary </td></tr>';
      totSalary = 0;
      var did = {}; 
      var row = 0;
      for (var i=0; i<knightRoles.length; i++){
        var leader = Seed.leaders['city'+cid][knightRoles[i][1]+'KnightId'];
        if (leader == 0)
          m += _dispKnight (i, null, c);
        else {
          m += _dispKnight (i, Seed.knights['city'+cid]['knt'+leader], c);
          did['knt'+leader] = true;
        }
      }
      var list = [];
      for (k in Seed.knights['city'+cid]){
        if (!did[k])
          list.push (Seed.knights['city'+cid][k]);
      }
      list.sort (function (a,b){return parseInt(b.combat)-parseInt(a.combat)});
      for (i=0; i<list.length; i++)
        m += _dispKnight (null, list[i], c,cid);
      m += '<TR align=right><TD colspan=13><B>Total Salary:</b></td><TD>'+ addCommas(totSalary) +'</td></tr>';        
    }
    document.getElementById('ptknightdiv').innerHTML = m +'</tbody></table></div>';
	t.action = 0;
    document.getElementById('ptknight_com').addEventListener ('click', function (){
      t.action=1;
      t.show();
    }, false);
    document.getElementById('ptknight_def').addEventListener ('click', function (){
          t.action=2;
          t.show();
    }, false);
    t.displayTimer = setTimeout (t.show, 10000);
  },
  postDismissKnight:function(kid,cid){
  	var t = Tabs.Knights;
  	var params = uW.Object.clone(uW.g_ajaxparams);
    params.cid = cid;
    params.kid = kid;
    new MyAjaxRequest(uW.g_ajaxpath + "ajax/fireKnight.php" + uW.g_ajaxsuffix, {
      method: "post",
      parameters: params,
      onSuccess: function (rslt) {
        if (rslt.ok) {
        	if (rslt.updateSeed){
        		delete Seed.knights["city" + cid]["knt" + kid];
        		if (rslt.updateSeed) {
                    uW.update_seed(rslt.updateSeed)
                }
        		t.show();
        	}
        } 
      },
      onFailure: function () {},
    });
  },



  clickedAssignPoints : function (e, cid, kid, rid){
    var t = Tabs.Knights;
    clearTimeout (t.displayTimer);
      
    var knight = Seed.knights['city'+cid]['knt'+kid];
    if (knight.knightStatus == 10 && e!=null){
      var row = e.parentNode.parentNode;
      row.childNodes[7].innerHTML = 'Marching';
      return; 
    }
    sk = [];
    var unassigned = parseInt(Math.sqrt(parseInt(knight.experience)/75)) + 1  - parseInt(knight.skillPointsApplied);
	var overassigned = 0;
    for (var i=0; i<4; i++){
      sk[i] = parseInt(knight[knightRoles[i][1]]);
      if (i == rid)
        sk[i] += unassigned;
      if(sk[i] > 255){
		overassigned = sk[i] - 255;
		sk[i] = 255;
	  }
    }
	if (unassigned==0 || overassigned>0) return;
    if (e!=null) {
		var row = e.parentNode.parentNode;
		for (i=row.cells.length-1; i>=1; i--)
		  row.deleteCell (i);
		var newCell=row.insertCell(-1);
		newCell.colSpan = 12;
		newCell.align= 'left';
		newCell.style.padding='1px 5px 1px 10px';
		var div = document.createElement ('div');
		div.style.backgroundColor = '#ffffff';
		div.style.textAlign = 'center';
		div.style.border = '1px solid';
		div.style.width = '98%';
		div.style.whiteSpace = 'normal';
		newCell.appendChild (div);
		div.innerHTML = 'Assigning '+ unassigned +' skill points to '+ knightRoles[rid][1] +' ... ';
	}
    t.postSkillPoints (cid, kid, sk[0], sk[1], sk[2], sk[3], function (r){t.postDone(r, div)});  
  },
  
  postDone : function (rslt, div){
    var t = Tabs.Knights;
    clearTimeout (t.displayTimer);
    if (rslt.ok){
      div.innerHTML += '<B>Done.</b>';
      t.displayTimer = setTimeout (t.show, 5000);
    } else {
      div.innerHTML += '<BR><SPAN class=boldRed>ERROR: '+ rslt.errorMsg +'</span>';
      t.displayTimer = setTimeout (t.show, 10000);
    }
  },
  
  postSkillPoints : function (cid, kid, pol, com, int, res, notify){  
    var params = uW.Object.clone(uW.g_ajaxparams);
    params.cid = cid;
    params.kid = kid;
    params.p = pol;
    params.c = com;
    params.i = int;
    params.r = res;
    if (DISABLE_POST_KNIGHT_SKILLS){   
      setTimeout (function (){notify({ok:true})}, 1500);    
//      setTimeout (  function (){notify({ok:false, errorMsg:"FAKE ERROR message, a long one, to test how it will fit and overflow! Perhaps you'll need to retry?"})}  , 2000);    
      return;  
    }
    new MyAjaxRequest(uW.g_ajaxpath + "ajax/skillupKnight.php" + uW.g_ajaxsuffix, {
      method: "post",
      parameters: params,
      onSuccess: function (rslt) {
        if (rslt.ok) {
          var knight = Seed.knights["city" + cid]["knt" + kid];
          var up = pol + com + int + res - knight.politics - knight.combat - knight.intelligence - knight.resourcefulness;
          knight.politics = pol;
          knight.combat = com;
          knight.intelligence = int;
          knight.resourcefulness = res;
          knight.skillPointsApplied = (parseInt(knight.skillPointsApplied) + up).toString();
        } 
        if (notify)
          notify (rslt);
      },
      onFailure: function () {
        if (notify)
          notify (rslt);
      },
    });
  },
};


/**************/

var messageNav = {
  mmFunc : null,
  mmsFunc : null,
  
  init : function (){
    t = messageNav;
    t.mmFunc = new CalterUwFunc ('modal_messages', [[/}\s*$/, 'setTimeout(messageNav_hook,0); }']]);
    t.mmsFunc = new CalterUwFunc ('modal_messages_send', [[/{\s*var params/i, '{\nif (modal_messages_send_hook()) return;\nvar params']]);
    uW.messageNav_hook = messageNav.hook;
    uW.modal_messages_send_hook = messageNav.msgSendHook;
    // t.mmFunc.setEnable (true);
    // t.mmsFunc.setEnable (true);
  },

  setEnable : function (tf){
  },

  isAvailable : function (){
    t = messageNav;
    //return t.mmFunc.isAvailable();
	return false;
  },
  
  hook : function (){
    if (!Options.enhanceMsging)
      return;
    var div = document.getElementById('modal_msg_view_actions');
    var but = makeButton20('Forward');
    div.appendChild (but);
    but.addEventListener ('click', messageNav.eventForward, false);
    div = document.getElementById('modal_msg_write_to').parentNode;
    div.innerHTML = '<TABLE><TR><TD class=xtab><b>To:</b> <INPUT type=text id=modal_msg_write_to></td><TD class=xtab><SPAN id=ptfwdbut></span></td></tr></table>';
    var button = makeButton20('All Officers');
    document.getElementById('ptfwdbut').appendChild (button);
    button.addEventListener ('click', function (){document.getElementById("modal_msg_write_to").value = "<officers>"}, false);
  },

  eventForward : function (){
    document.getElementById('modal_msg_write_subj').value = "fwd: " + document.getElementById('modal_msg_view_subj').innerHTML.toString().stripTags();
    document.getElementById('modal_msg_write_to').value = '';
    var from = document.getElementById('modal_msg_view_from').children[0].innerHTML;
    var body = document.getElementById('modal_msg_view_body').innerHTML.replace(/\n/g, '').replace(/<br>/gi, '\n').stripTags().replace (/back$/i, '');
    document.getElementById('modal_msg_write_txt').value = '[Original message from '+ from +' follows:]\n'+ body;
    uW.modal_messages_compose();
  },

  msgSendHook : function (){
    if (!Options.enhanceMsging)
      return;
    var to = document.getElementById("modal_msg_write_to").value.trim();
    if (to.toLowerCase() != '<officers>' || getMyAlliance()[0]==0)
      return false;
    var params = uW.Object.clone(uW.g_ajaxparams);
    params.toIds = getMyAlliance()[0];
    params.subject = document.getElementById("modal_msg_write_subj").value +' [Sent to all officers]';
    params.message = document.getElementById("modal_msg_write_txt").value;
    params.type = 'alliance';
    new AjaxRequest(uW.g_ajaxpath + "ajax/sendMessage.php" + uW.g_ajaxsuffix, {
        method: "post",
        parameters: params,
        onSuccess: function (message) {
            var rslt = eval("(" + message.responseText + ")");
            if (rslt.ok) {
                uW.Modal.showAlert(uW.g_js_strings.modal_messages_send.msgsent);
                document.getElementById('modal_msg_write_to').value = "";
                document.getElementById('modal_msg_write_subj').value = "";
                document.getElementById('modal_msg_write_txt').value = ""
            } else {
                uW.Modal.showAlert(uW.g_js_strings.modal_messages_send.enterexistingname)
            }
        },
        onFailure: function () {
          uW.Modal.showAlert(uW.g_js_strings.modal_messages_send.oopscompose)
        },
    });
    return true;
  },
}


var AttackDialog = {
  init : function (){
    var t = AttackDialog;
    t.modal_attackFunc = new CalterUwFunc ('modal_attack', [[/}\s*$/, 'attackDialog_hook(); }']]);
    uW.attackDialog_hook = t.modalAttackHook;
    t.modal_attackFunc.setEnable (true);
  },
  
  setEnable : function (){
  },

  isKnightSelectAvailable : function (){
    var t = AttackDialog;
    return t.modal_attackFunc.isAvailable();
  },
  isAttackCityPickerAvailable : function (){
    var t = AttackDialog;
    return t.modal_attackFunc.isAvailable();
  },
    
  modalAttackHook : function (){
    var t = AttackDialog;
    if (Options.fixKnightSelect || Options.attackCityPicker){
      for (var i=1; i<6; i++)
        document.getElementById('modal_attack_tab_'+ i).addEventListener('click', t.e_changeMarchType, false);
    }
    if (Options.attackCityPicker){
      setTimeout (t.initCityPicker, 0);
    }      
  },
  
  initCityPicker : function (){
    var t = AttackDialog;
    var div = document.getElementById('modal_attack_target_numflag'); // as of KofC version 96;
    var mySpan;
    if (div) {
      div.parentNode.innerHTML += ' &nbsp; <SPAN id=modal_attack_citybuts></span>';
    } else {
      var span = document.getElementById('modal_attack_target_coords');   // KofC version 116+;
      span.parentNode.parentNode.firstChild.innerHTML += ' &nbsp; <SPAN id=modal_attack_citybuts></span>';
    }
    new CdispCityPicker ('ptatp', document.getElementById('modal_attack_citybuts'), false, t.e_CityButton);
    var cityIdx = Cities.byID[uW.currentcityid].idx;
    thisCityBut = document.getElementById('ptatp_'+ cityIdx);
    thisCityBut.style.opacity = '0.5';
    thisCityBut.disabled = true;
    if (document.getElementById('modal_attack_tab_4').className=='selected' || document.getElementById('modal_attack_tab_3').className=='selected')   // don't do for attack or scout
      document.getElementById('modal_attack_citybuts').style.display = 'none';
  },
  
  e_CityButton : function (city){
    document.getElementById('modal_attack_target_coords_x').value = city.x;
    document.getElementById('modal_attack_target_coords_y').value = city.y;
    uW.modal_attack_update_time();
  },
      
  e_changeMarchType : function (evt){
    var t = AttackDialog;
    var marchType = parseInt(evt.target.id.substr(17));  
    if (Options.attackCityPicker){
      if (marchType==3 || marchType==4)
        document.getElementById('modal_attack_citybuts').style.display = 'none';
      else
        document.getElementById('modal_attack_citybuts').style.display = 'inline';
    }
    if (Options.fixKnightSelect){
      var knightVal = 0;
      var selector = document.getElementById('modal_attack_knight'); 
      if (selector.length>1 && (marchType==4 || marchType==2))   // if 'attack' or 'reinforce'
        knightVal = 1;
      selector.selectedIndex = knightVal;
    }
  },  
}

var DispReport = {
  init : function (){
    var t = DispReport;
    t.modal_InboxFunc = new CalterUwFunc ('modal_messages_listshow', [['msghtml.join("");', 'msghtml.join("");dispInbox_hook(rslt,boxType,msghtml);']]);
    uW.dispInbox_hook = t.ModalInboxHook;
    t.modal_InboxFunc.setEnable (Options.enhancedinbox);
    t.modal_RptFunc = new CalterUwFunc ('Messages.handleListReports', [['n.join("");', 'n.join("");dispRpt_hook(l,n);']]);
    uW.dispRpt_hook = t.ModalReportListHook;
    t.modal_RptFunc.setEnable (Options.enhancedinbox);
  },
  
  setEnable : function (tf){
    var t = DispReport;
    t.modal_InboxFunc.setEnable (tf);
  },

  isDispReportAvailable : function (){
    var t = DispReport;
    return t.modal_InboxFunc.isAvailable();
  },
    
  ModalInboxHook : function (rslt,boxType,msghtml){
    var t = DispReport;
    if(boxType == 'inbox'){
		msgBody = document.getElementById('modal_msg_list');
		var a = document.createElement('a');
			a.className='buttonDown20';
			a.innerHTML='<span>Delete Gift Report</span>';
			a.style.float = 'left';
			a.addEventListener('click', t.checkinbox, false);
		var div = document.createElement('span');
		div.appendChild(a);
		msgBody.appendChild(div);
		var mml = document.getElementById('modal_msg_list');
		if (mml != null)
			mml.style.minHeight = '400px';
	}
  },
  
  checkinbox : function(){
    var t = DispReport;
    var body = document.getElementById('tbl_messages');
    var trs=body.getElementsByTagName('tr');
    var reports = [];
	for(var i=0; i<trs.length; i++){
		var tds = trs[i].getElementsByTagName('td');
		for(var j=0; j<tds.length; j++){
			if(tds[j].className == 'chkcol'){
				var checkbox = tds[j];
			}
			if(tds[j].className == 'nmcol'){
				var sender = tds[j];
			}
			if(tds[j].className == 'subjcol'){
				var subject = tds[j];
			}
		}
		reports.push({checkbox:checkbox,sender:sender,subject:subject});
	}
	t.parseGiftReport(reports);
  },
  
  parseGiftReport : function(rpts){
    var t = DispReport;
    for(var i=0; i<rpts.length; i++){
		// logit(inspect(rpts[i].subject));
		// logit(inspect(rpts[i].sender));
		if(rpts[i].subject.innerHTML.indexOf('New Gift Received!') >= 0 && rpts[i].sender.innerHTML.indexOf('Kingdoms Of Camelot') >= 0){
			rpts[i].checkbox.firstChild.checked = true;
		}
	}
	uW.messages_action("delete","tbl_messages"); 
  },
  
  ModalReportListHook : function (rslt, msghtml){
	var t = DispReport;
    if(rslt.ok){
		msgBody = document.getElementById('modal_msg_reports_tablediv');
		var a = document.createElement('a');
			a.className='buttonDown20';
			a.innerHTML='<span>Delete Wild/Barb/Transport</span>';
			a.style.float = 'left';
			a.addEventListener('click', t.checkreportlist, false);
		var div = document.createElement('span');
		div.appendChild(a);
		msgBody.appendChild(div);
		var mml = document.getElementById('modal_msg_list');
		if (mml != null)
			mml.style.minHeight = '400px';
	}
  },
  
  checkreportlist : function(){
    var t = DispReport;
    var body = document.getElementById('modal_msg_reports_tablediv');
    var trs=body.getElementsByTagName('tr');
    var reports = [];
	for(var i=0; i<trs.length; i++){
		var tds = trs[i].getElementsByTagName('td');
		for(var j=0; j<tds.length; j++){
			if(tds[j].className == 'chkcol'){
				var checkbox = tds[j];
			}
			if(tds[j].className == 'nmcol'){
				var type = tds[j];
			}
			if(tds[j].className == 'subjcol'){
				var view = tds[j];
			}
		}
		reports.push({checkbox:checkbox,type:type,view:view});
	}
	t.parseBarbReport(reports);
  },
  
  parseBarbReport : function(rpts){
    var t = DispReport;
	//Messages.viewMarchReport("25175",1,51,7,0,"Enemy","0","oftheNOOBS","M",4,518,355,1349852870,1,517,346,0,1550996);return false;
	var regex = /Messages.viewMarchReport\((["0-9]+),(["0-9]+),(["0-9]+),(["0-9]+),(["0-9]+),("[^"]+"),("[^"]+"),("[^"]+"),("[^"]+"),(["0-9]+),(["0-9]+),(["0-9]+),(["0-9]+),(["0-9]+),(["0-9]+),(["0-9]+),(["0-9]+),(["0-9]+)\)/;
    for(var i=0; i<rpts.length; i++){
		var m = regex.exec(rpts[i].view.innerHTML);
		if(m){
			if(m[6]==m[8] && m[7]==m[9]){ //Source and target id the same.
				// continue; //Infer transport to self
			} else if(m[5] != 0) {
				continue;
			}
			rpts[i].checkbox.firstChild.checked = true;
		}
	}
	uW.Messages.deleteCheckedReports();
  }

}

var AllianceReports = {
  checkPeriod : 300,
  allianceNames : [],
  saveArfunc : uW.allianceReports,

  init : function (){
    t = AllianceReports;
    t.enable (Options.enhanceARpts);
    t.marvFunc = new CalterUwFunc ('modal_alliance_report_view', [['getReportDisplay', 'getReportDisplay_hook2']]);
    t.memListFunc = new CalterUwFunc ('membersInfo', [['commonstr.might','commonstr.might + "</td><td class=colcities>" + g_js_strings.commonstr.cities + "</td><td class=collast>" + g_js_strings.membersInfo.lastonline'],['memberInfo[key].prestige', 'memberInfo[key].prestige+ "</td>");memhtml.push("<td class=colcities>" + memberInfo[key].cities + "</td>");memhtml.push("<td class=collast>" + memberInfo[key].lastLogin']]);
    uW.getReportDisplay_hook2 = t.getReportDisplayHook;
    uW.getmembersInfo_hook = t.getMembersInfoHook;
    t.marvFunc.setEnable (true);
	t.enable_viewmembers(Options.enhanceViewMembers);
  },
   
  getReportDisplayHook : function (a, b){
    var x = '';
    try {
      x = uW.getReportDisplay(a,b);  
    } catch (e){
      x = 'Error formatting report: '+ e;
    }
    return x;
  },
  
  enable_viewmembers : function (tf){
    t = AllianceReports;
    t.memListFunc.setEnable (tf);
  },
  
  enable : function (tf){
    t = AllianceReports;
    if (tf)
      uW.allianceReports = t.myAllianceReports;
    else
      uW.allianceReports = t.saveArfunc;
  },
  
  myAllianceReports : function (pageNum){
    var params = uW.Object.clone(uW.g_ajaxparams);
    if (pageNum)
      params.pageNo = pageNum;
    params.group = "a";
    new MyAjaxRequest(uW.g_ajaxpath + "ajax/listReports.php" + uW.g_ajaxsuffix, {
      method: "post",
      parameters: params,
      onSuccess: function (rslt) {
//logit (inspect (rslt, 1, 1));        
        displayReports (rslt.arReports, rslt.arPlayerNames, rslt.arAllianceNames, rslt.arCityNames, rslt.totalPages);
      },
      onFailure: function (rslt) {
      },
    }, false);

    function displayReports (ar, playerNames, allianceNames, cityNames, totalPages){
      var msg = new Array();
      var myAllianceId = getMyAlliance()[0];
      msg.push ("<STYLE>.msgviewtable tbody .myCol div {margin-left:5px; overflow:hidden; white-space:nowrap; color:#000}\
            .msgviewtable tbody .myHostile div {font-weight:600; color:#600}\
            .msgviewtable tbody .myGray div {color:#666}\
            .msgviewtable tbody .myRein div {color:#050}\
            .msgviewtable tbody .myWarn div {font-weight:600; color:#442200}\
            </style>");
      msg.push("<div class='modal_msg_reports'>");
      var rptkeys = uW.Object.keys(ar);
      if (matTypeof(ar) != 'array') {
//logit ('displayReports: '+ Options.allowAlterAR);        
        if (Options.allowAlterAR)
          msg.push("<div id='modal_alliance_reports_tablediv' class='modal_msg_list'><table width=675 cellpadding='0' cellspacing='0' class='msgviewtable reportviewtable alliancetable'>");
        else
          msg.push("<div id='modal_alliance_reports_tabledivNKA' class='modal_msg_list'><table width=675 cellpadding='0' cellspacing='0' class='msgviewtable reportviewtable alliancetable'>");
        msg.push("<thead><tr><td width=105>Date</td><td width=40>Type</td><td width=150>Attacker</td><td>Target</td><td>View</td></tr></thead><tbody>");
        for (var i = 0; i < rptkeys.length; i++) {
          var rpt = ar[rptkeys[i]];
          var colClass = '"myCol"';
          rpt.marchType = parseInt(rpt.marchType);
          rpt.side0AllianceId = parseInt(rpt.side0AllianceId);
          var targetDiplomacy = getDiplomacy (rpt.side0AllianceId);
          if (rpt.marchType == 2){
            colClass = '"myCol myRein"';
          } else if (rpt.side1AllianceId != myAllianceId){
            colClass = '"myCol myHostile"';
          } else {
            if (parseInt(rpt.side0TileType) < 50){          // if wild
              if (parseInt(rpt.side0PlayerId) == 0)
                colClass = '"myCol myGray"';
              else
                colClass = '"myCol myWarn"';
            } else if (parseInt(rpt.side0PlayerId) == 0) {   // barb
              colClass = '"myCol myGray"';
            } else {
              if (targetDiplomacy == 'friendly')
                colClass = '"myCol myWarn"';
            }
          }
//logit (inspect (ar, 3, 1));
          msg.push ('<tr valign=top');
          if (i%2 == 0)
            msg.push(" class=stripe");
          msg.push("><TD class="+ colClass +"><div>");
          msg.push(uW.formatDateByUnixTime(rpt.reportUnixTime));
          msg.push ('<BR>Rpt #');
          msg.push (rpt.reportId);          
          msg.push("</div></td><TD class="+ colClass  +"><div>");
          if (rpt.marchType == 1)
            msg.push (uW.g_js_strings.commonstr.transport);
          else if (rpt.marchType == 3)
            msg.push (uW.g_js_strings.commonstr.scout);
          else if (rpt.marchType == 2)
            msg.push ('Reinf');
          else
            msg.push (uW.g_js_strings.commonstr.attack);

          // attacker ...
          msg.push ("</div></td><TD class="+ colClass +"><div>");
          if (parseInt(rpt.side1PlayerId) != 0)
            msg.push(escape(playerNames["p" + rpt.side1PlayerId]))
          else
            msg.push ('?Unknown?');
            msg.push (' ');
            msg.push (coordLink(rpt.side1XCoord, rpt.side1YCoord));
            msg.push ('<BR>');
          
          if (rpt.side1AllianceId != myAllianceId){
            msg.push (allianceNames['a'+rpt.side1AllianceId]);
            msg.push (' (');
            msg.push (getDiplomacy(rpt.side1AllianceId));
            msg.push (')');
          } else {
            msg.push ('<BR>');
          }
          msg.push ('</div></td>');

          // target ...
          msg.push ("<TD class="+ colClass  +"><DIV>");
          var type = parseInt(rpt.side0TileType);

          if (type < 50){                              // wild
            msg.push(uW.g_mapObject.types[type].toString().capitalize());
            msg.push(" Lvl " + rpt.side0TileLevel)
            if (parseInt(rpt.side0PlayerId) != 0) {   // IF OWNED, show owner ...
              msg.push (' [');
              msg.push (escape(playerNames["p" + rpt.side0PlayerId]));
              msg.push ('] ');
            }
          } else {
            if (parseInt(rpt.side0PlayerId) == 0) {   //  barb
              msg.push(uW.g_js_strings.commonstr.barbariancamp);
              msg.push(" Lvl " + rpt.side0TileLevel)
            } else {        // city
              msg.push (escape(playerNames["p" + rpt.side0PlayerId]));
              msg.push (' - ');
              msg.push (cityNames['c'+ rpt.side0CityId]);
            }
          }
          msg.push (' ');
          msg.push (coordLink(rpt.side0XCoord, rpt.side0YCoord));
          if (rpt.side0AllianceId!=0 && rpt.side0AllianceId!=myAllianceId){
            msg.push ('<BR>');
            msg.push (allianceNames['a'+rpt.side0AllianceId]);
            msg.push (' (');
            msg.push (targetDiplomacy);
            msg.push (')');
          }

          
/***
        
MY reports, reins works ...
<div><a href="#" onclick="jQuery('#modal_msg_body').trigger('viewReinforcedReport', ['6076798','67674','Elroy','IV','13412958','Duke_Swan','6329','Erisvil',662,477]);return false;">View Report</a></div>

    
OK: <a onclick=" $(&quot;modal_alliance_reports_tabledivNKA&quot;).id=&quot;modal_alliance_reports_tablediv&quot;; modal_alliance_report_view(&quot;6044155&quot;,0,51,9,2282354,&quot;Jetson&quot;,&quot;M&quot;,&quot;Joe7z6bq&quot;,&quot;M&quot;,4,668,437,1299747584,0,643,407);return false;">View</a></div>           
ERROR (Reinf): <a onclick=" $(&quot;modal_alliance_reports_tabledivNKA&quot;).id=&quot;modal_alliance_reports_tablediv&quot;; modal_alliance_report_view(&quot;6043602&quot;,1,51,9,13487684,&quot;Fred8135i&quot;,&quot;M&quot;,&quot;Jetson&quot;,&quot;M&quot;,2,188,696,1299746211,0,23,518);return false;">View</a>
modal_alliance_report_view("6043602",1,51,9,13487684,"Fred8135i","M","Jetson","M",2,188,696,1299746211,0,23,518);return false;'>View</a>                        
modal_alliance_report_view(&quot;6043602&quot;,1,51,9,13487684,&quot;Fred8135i&quot;,&quot;M&quot;,&quot;Jetson&quot;,&quot;M&quot;,2,188,696,1299746211,0,23,518);return false;">View Report</a></div>            
modal_alliance_report_view("6043602",1,51,9,13487684,"Fred8135i","M","Jetson","M",2,188,696,1299746211,0,23,518);return false;">View Report</a></div>            
***/          
          
          
          // 'view report' link ...
          if (Options.allowAlterAR)
            msg.push("</div></td><TD class="+ colClass  +"><div><a onclick=' modal_alliance_report_view(\"");   // ONCLICK ???
          else
            msg.push("</div></td><TD class="+ colClass  +"><div><a onclick=' $(\"modal_alliance_reports_tabledivNKA\").id=\"modal_alliance_reports_tablediv\"; modal_alliance_report_view(\"");   // ONCLICK ???
          msg.push(rpt.reportId);
          msg.push('",');
          if (parseInt(rpt.side1AllianceId) == parseInt(Seed.allianceDiplomacies.allianceId))
            msg.push(1);
          else
            msg.push(0);
          msg.push(",");
          msg.push(rpt.side0TileType);
          msg.push(",");
          msg.push(rpt.side0TileLevel);
          msg.push(",");
          msg.push(rpt.side0PlayerId);
          msg.push(',"');
          if (parseInt(rpt.side0PlayerId) != 0)
            msg.push(escape(playerNames["p" + rpt.side0PlayerId]));
          else
            msg.push(uW.g_js_strings.commonstr.enemy);
          msg.push('","');
          if (parseInt(rpt.side0PlayerId) != 0)
            msg.push(escape(playerNames["g" + rpt.side0PlayerId]));
          else
            msg.push(0)
          msg.push('","');
          if (parseInt(rpt.side1PlayerId) > 0)
            msg.push(escape(playerNames["p" + rpt.side1PlayerId]));
          msg.push('","');
          if (parseInt(rpt.side1PlayerId) != 0)
            msg.push(escape(playerNames["g" + rpt.side1PlayerId]));
          msg.push('",');
          msg.push(rpt.marchType);
          msg.push(",");
          msg.push(rpt.side0XCoord);
          msg.push(",");
          msg.push(rpt.side0YCoord);
          msg.push(",");
          msg.push(rpt.reportUnixTime);
          msg.push(",");
          if (parseInt(rpt.reportStatus) == 2)
            msg.push(1);
          else
            msg.push(0);
          if (rpt.side1XCoord) {
            msg.push(",");
            msg.push(rpt.side1XCoord);
            msg.push(",");
            msg.push(rpt.side1YCoord)
          } else {
            msg.push(",,");
          }
          msg.push(");return false;'>View</a></div></td></tr>");
        }
        msg.push("</tbody></table></div>");
      }
      msg.push("</div><div id='modal_report_list_pagination'></div>");
      document.getElementById('allianceContent').innerHTML = msg.join("");
      if (pageNum) {
        uW.ctrlPagination("modal_report_list_pagination", totalPages, "allianceReports", pageNum)
      } else {
        uW.ctrlPagination("modal_report_list_pagination", totalPages, "allianceReports")
      }
    }
  },

}   // end AllianceReports singleton



/************************ Food Alerts *************************/
var FoodAlerts = {

  init : function (){
   var f = FoodAlerts;
   f.e_eachMinute();
  },

  minuteTimer : null,

  e_eachMinute : function (){  
    var f = FoodAlerts;
    var now = unixTime();
      row = [];

      for(i=0; i < Cities.numCities; i++) {
        var rp = getResourceProduction (Cities.cities[i].id);
        var foodleft = parseInt(Seed.resources["city" + Cities.cities[i].id]['rec1'][0])/3600;
        var usage = rp[1] - parseInt(Seed.resources["city" + Cities.cities[i].id]['rec1'][3]);
        row[i] = rp[1] - usage;
          var timeLeft = parseInt(Seed.resources["city" + Cities.cities[i].id]['rec1'][0]) / 3600 / (0-usage) * 3600;
          var msg = '';
        if (usage < 0) { 
    if (Options.enableFoodTower && timeLeft<(6*3600)) {
                msg += 'My city ' + Cities.cities[i].name.substring(0,10) + ' (' +
                       Cities.cities[i].x +','+ Cities.cities[i].y + ')';
                msg += ' is low on food. Remaining: '+addCommasWhole(foodleft)+' ('+timestrShort(timeLeft)+') Upkeep: '+addCommas(usage);
                sendChat ("/a " + msg);
          }
    }
      } 
  f.minuteTimer = setTimeout (f.e_eachMinute, 1800000);
  }, 
}



/************************ Tower Alerts ************************/
var TowerAlerts = {
  viewImpendingFunc : null,
  generateIncomingFunc : null,
  fixTargetEnabled : false,
  towerMarches : {},    // track all marches that have been posted to alliance chat
  
  init : function (){
    var t = TowerAlerts; 
    var s = GM_getValue ('towerMarches_'+GetServerId());
    if (s != null)
      t.towerMarches = JSON2.parse (s);
 
    t.viewImpendingFunc = new CalterUwFunc ('attack_viewimpending_view', [[/Modal.showModal\((.*)\)/im, 'Modal.showModal\($1\); ptViewImpending_hook(a);']]);
    uW.ptViewImpending_hook = t.viewImpending_hook;
    t.viewImpendingFunc.setEnable (true);

    t.generateIncomingFunc = new CalterUwFunc ('attack_generateincoming', [[/.*} else {\s*e = true;\s*}/im, '} else { e = ptGenerateIncoming_hook(); }']]);
    uW.ptGenerateIncoming_hook = t.generateIncoming_hook;
  },
    
  // fix 'target', add button  
  viewImpending_hook : function (atkinc){    
    var t = TowerAlerts;  
    var div = document.getElementById('modal_attackimpending_view');
    var isFalse = false;
    if (t.fixTargetEnabled){ 
      var city = Cities.byID[atkinc.toCityId];
      var target = '';
      if (!city || (atkinc.marchType!=3 && atkinc.marchType!=4)){  
        target = '<B>FALSE REPORT!</b>';
        isFalse = true;
      } else if (city.tileId == atkinc.toTileId){
        target = city.name + ' ('+ city.x + ','+ city.y +')';
      } else {
        wilds = Seed.wilderness['city'+atkinc.toCityId];
        m = '';
        for (k in wilds){
          if (wilds[k].tileId == atkinc.toTileId){
            m = 'at '+ wilds[k].xCoord + ','+ wilds[k].yCoord;
            break;
          }
        }
        target = city.name + ', <B>WILD '+ m +'</b>';
      }
      div.childNodes[0].innerHTML = '<B>Target: </b>'+ target;
    }
    if (!isFalse){
      var d = document.createElement ('div');
      d.innerHTML = '<BR><TABLE><TR><TD><a id=towerPostToChat class=button20><span>Post to Alliance Chat</span></a></td></tr></table>';
      div.appendChild (d);
      document.getElementById('towerPostToChat').addEventListener('click', function (){t.e_buttonPostToChat(atkinc)}, false);
    }
  },

  // fix false reports  
  generateIncoming_hook : function (){    
    return false;
  },
  
  enableFixFalseReports : function (tf){
    var t = TowerAlerts;  
    t.generateIncomingFunc.setEnable (tf);
  },
  enableFixTarget : function (tf){
    var t = TowerAlerts;  
    t.fixTargetEnabled = tf;
  },
  
  isFixTargetAvailable : function (){
    var t = TowerAlerts;  
    return t.viewImpendingFunc.isAvailable();
  },
  isFixFalseReportsAvailable : function (){
    var t = TowerAlerts;  
    return t.generateIncomingFunc.isAvailable();
  },
  
  
  postToChatOptions : {aChat:false},

  setPostToChatOptions : function (obj){
    var t = TowerAlerts;
    t.postToChatOptions = obj;
    clearTimeout(t.secondTimer);
  },

  e_buttonPostToChat : function (march){
    var t = TowerAlerts;
    t.postToChat (march, true);
    uW.Modal.hideModal();
  },
  
  postToChat : function (m, force){
    var t = TowerAlerts;
    
    if (DEBUG_TRACE) logit ("checkTower(): INCOMING at "+ unixTime()  +": \n"+ inspect (m, 8, 1));
    if (m.marchType == null)      // bogus march (returning scouts)
      return;
    if (ENABLE_TEST_TAB) Tabs.Test.addDiv ("Incoming!<BR><PRE style='margin:0px;'>" + inspect (m, 8, 1) +'</pre>');
    if (m.marchType == 3){
      if (!t.postToChatOptions.scouting && !force)
        return;
      atkType = 'scouted';
    } else if (m.marchType == 4){
      atkType = 'attacked';
    } else {
      return;
    }
    var target, atkType, who;
    var city = Cities.byID[m.toCityId];
    if ( city.tileId == m.toTileId )
      target = 'city at '+ city.x +','+ city.y;
    else {
      if (!t.postToChatOptions.wilds && !force)
        return;
      target = 'wilderness';
      for (k in Seed.wilderness['city'+m.toCityId]){
        if (Seed.wilderness['city'+m.toCityId][k].tileId == m.toTileId){
          target += ' at '+ Seed.wilderness['city'+m.toCityId][k].xCoord +','+ Seed.wilderness['city'+m.toCityId][k].yCoord;
          break;
        }
      }
    }
    if (Seed.players['u'+m.pid])
      who = Seed.players['u'+m.pid].n;
    else if (m.players && m.players['u'+m.pid])
      who = m.players['u'+m.pid].n;
    else
      who = 'Unknown';
  
    if (m.fromXCoord)
      who += ' at '+ m.fromXCoord +','+ m.fromYCoord;
    var msg = '';
    if (!force)
      msg = t.postToChatOptions.aPrefix +' ';
    msg += 'My '+ target +' is being '+ atkType  +' by '+ who +'. Incoming Troops (arriving in '+
        uW.timestr(parseInt(m.arrivalTime - unixTime())) +') : ';
    var totTroops = 0;
    for (k in m.unts){
      var uid = parseInt(k.substr (1));
      msg += m.unts[k] +' '+ uW.unitcost['unt'+uid][0] +', ';
      totTroops += m.unts[k];
    }
    if ((totTroops < t.postToChatOptions.minTroops) && !force)
      return;
    msg = msg.slice (0, -2);
    msg += '.';
    if ( city.tileId == m.toTileId ){
      var emb = getCityBuilding(m.toCityId, 8);
      if (emb.count > 0){
        var availSlots = emb.maxLevel;
        for (k in Seed.queue_atkinc){
          if (Seed.queue_atkinc[k].marchType==2 && Seed.queue_atkinc[k].toCityId==m.toCityId && Cities.byID[Seed.queue_atkinc[k].fromCityId]==null){ 
 //         if (Seed.queue_atkinc[k].marchType==2 && Cities.byID[Seed.queue_atkinc[k].fromCityId]==null){
            --availSlots;
          }
        }
        msg += ' My embassy has '+ availSlots +' of '+ emb.maxLevel +' slots available.';
      }
    }
    if (ENABLE_TEST_TAB) Tabs.Test.addDiv (msg);
    if (SEND_ALERT_AS_WHISPER)
      sendChat ("/"+ Seed.player.name +' '+ msg);    // Whisper to myself
    else
      sendChat ("/a "+  msg);                        // Alliance chat
  },
  
}

function parseIntNan (n){
  x = parseInt(n, 10);
  if (isNaN(x))
    return 0;
  return x; 
}
function parseIntZero (n){
  if (n == '')
    return 0;
  return parseInt(n, 10);
}

/*********************************** Players TAB ***********************************/

function officerId2String (oid){
  if (oid==null)
    return '';
  else if (oid==3) 	
    return uW.allianceOfficerTypeMapping[3];
  else if (oid==2)
    return uW.allianceOfficerTypeMapping[2];
  else if (oid==1)
    return uW.allianceOfficerTypeMapping[1];
    else if (oid==4)
    return uW.allianceOfficerTypeMapping[4];
  return '';
}

Tabs.AllianceList = {
  tabOrder : 25,
  tabLabel : uW.g_js_strings.commonstr.player,
  cont : null,
  dat : [],
  clickedAlly:false,
  

/***
ajax/viewCourt.php:
  (boolean) ok = true
  (array) courtItems = 

  (string) dailyActionFlag = 0
  (object) playerInfo = [object Object]
    (string) datejoinUnixTime = 1294440708
    (string) truceExpireUnixTime = 0
    (string) userId = 4394121
    (string) displayName = Vakasade
    (string) email = 
    (string) fbuid = 100000977751880
    (string) playerSex = F
    (string) usertype = 1
    (string) status = 1
    (string) dateJoined = 2011-01-07 14:51:48
    (string) lastLogin = 2011-03-13 13:11:34
    (string) eventTimestamp = 0000-00-00 00:00:00
    (string) eventStatus = 1
    (string) warStatus = 1
    (string) allianceId = 85
    (number) might = 1192710
    (string) title = 57
    (string) truceExpireTimestamp = 0000-00-00 00:00:00
    (string) fogExpireTimestamp = 0000-00-00 00:00:00
    (string) cnt_newmsg = 0
    (string) cnt_friendreq = 0
    (string) cnt_logins = 3910
    (string) cnt_passreset = 0
    (string) cnt_connections = 0
    (string) avatarId = 11
    (undefined) photo_host: null = null
    (undefined) photo_dir: null = null
    (undefined) photo_subdir: null = null
    (undefined) photo_name: null = null
    (string) allianceName = The Flying Circus

  (number) cityCount = 2
  (undefined) errorMsg: null = null
***/
fetchPlayerCourt : function (uid, notify){
  var params = uW.Object.clone(uW.g_ajaxparams);
  params.pid = uid;
  new MyAjaxRequest(uW.g_ajaxpath + "ajax/viewCourt.php" + uW.g_ajaxsuffix, {
    method: "post",
    parameters: params,
    onSuccess: function (rslt) {
logit ("ajax/viewCourt.php\n"+ inspect (rslt, 3, 1));      
      notify (rslt);
    },
    onFailure: function (rslt) {
      notify (rslt);
    },
  });
},


fetchTEST : function (pageNum, notify){    // as in alliance list, sorted by rank, 10 per page
  var params = uW.Object.clone(uW.g_ajaxparams);
  params.pageNo = 1;
  params.numPerPage = 100;
  params.perPage = 100;
  params.results = 100;
  params.numResults = 100;
  new MyAjaxRequest(uW.g_ajaxpath + "ajax/allianceGetMembersInfo.php" + uW.g_ajaxsuffix, {
    method: "post",
    parameters: params,
    onSuccess: function (rslt) {
logit ("ajax/allianceGetMembersInfo.php:\n"+ inspect (rslt, 5, 1));      
      notify (rslt);
    },
    onFailure: function (rslt) {
      notify ({errorMsg:'AJAX error'});
    },
  });
},

  
   init : function (div){
    var t = Tabs.AllianceList;
    t.cont = div;

    uW.PTgetMembers = t.eventGetMembers;
    uW.PTPaintMembers = t.GetDataForMap;
    uW.PTpd = t.clickedPlayerDetail;
    uW.PTpl = t.clickedPlayerLeaderboard;
    uW.PTpl2 = t.clickedPlayerLeaderboard2;
    uW.PTalClickPrev = t.eventListPrev;
    uW.PTalClickNext = t.eventListNext;
    uW.PCplo = t.clickedPlayerGetLastLogin;
    Lastlogin=0;
    t.show();
  },
 
  hide : function (){
  },

  show : function (){
    var t = Tabs.AllianceList;
    if (t.state == null){
      if (getMyAlliance()[0] == 0) {
        t.cont.innerHTML = '<BR><BR><CENTER>'+uW.g_js_strings.membersInfo.youmustbelong+'</center>';
        t.state = 1;
        return;
      }
      
       var m = '<DIV class=ptentry><TABLE width=100% cellpadding=0>';
       m+= '<TD width = "100px" ; border:none"><a href="http://code.google.com/p/koc-power-tools/wiki/HowtoPlayers" target="_blank">HELP</a></td></tr>';
	   m+='<TR><TD class=xtab align=right></td><TD class=xtab>'+uW.g_js_strings.modal_fow_leaderboard.searchuser+': &nbsp; </td>';
       m+=' <TD width=80% class=xtab><INPUT id=allPlayName size=20 type=text/> &nbsp;'; 
       m+='<INPUT id=playSubmit type=submit value="'+uW.g_js_strings.modal_fow_leaderboard.finduser+'" /> &nbsp; <INPUT id=ffbuidsubmit type=submit value="UID" /></td>\
            <TD class="xtab ptErrText"><SPAN id=ptplayErr></span></td></tr>\
          <TR><TD class=xtab></td><TD class=xtab>'+uW.g_js_strings.setDiplomacyWindow.srchalli+': &nbsp;</td>\
            <TD class=xtab><INPUT id=allAllName type=text /> &nbsp; <INPUT id=allSubmit type=submit value="'+uW.g_js_strings.modal_fow_leaderboard.findalli+'" /></td>\
            <TD class="xtab ptErrText"><SPAN id=ptallErr></span></td></tr>\
           <TR><TD class=xtab><INPUT align=left id=allListSubmit type=submit value="'+uW.g_js_strings.commonstr.alliances+'" /></td>\
            <TD class=xtab><INPUT align=right id=idMyAllSubmit type=submit value="'+ getMyAlliance()[1] +'"/>\
            <TD><INPUT id=pbShowFriendlies type=CHECKBOX>Show Friendlys &nbsp;<INPUT id=pbShowHostiles type=CHECKBOX>Show Hostiles</td>\
             <TD class=xtab></td><TD class=xtab><span align=right <b>'+uW.g_js_strings.attack_generateincoming.estimatedarrival+': </b></span>\
            <div><select id="idFindETASelect">\
        <option value="0,0" > -- Select -- </option>\
        <option value="0,180" >'+uW.unitcost["unt1"][0]+'</option>\
        <option value="0,200" > '+uW.unitcost["unt2"][0]+' </option>\
        <option value="0,3000" > '+uW.unitcost["unt3"][0]+' </option>\
        <option value="0,300" > '+uW.unitcost["unt4"][0]+' </option>\
        <option value="0,275" > '+uW.unitcost["unt5"][0]+' </option>\
        <option value="0,250" > '+uW.unitcost["unt6"][0]+' </option>\
        <option value="1,1000" > '+uW.unitcost["unt7"][0]+' </option>\
        <option value="1,750" > '+uW.unitcost["unt8"][0]+' </option>\
        <option value="1,150" > '+uW.unitcost["unt9"][0]+' </option>\
        <option value="1,100" > '+uW.unitcost["unt10"][0]+' </option>\
        <option value="1,120" > '+uW.unitcost["unt11"][0]+' </option>\
        <option value="1,80" > '+uW.unitcost["unt12"][0]+' </option>\
        </select></div>\
        </td></tr>\
        <TR><TD colspan=5><DIV id=pbFriendlyDivs style="max-width:725px; white-space:pre-wrap"></div></td>\
        <TR><TD colspan=5><DIV id=pbHostilesDivs style="max-width:725px; white-space:pre-wrap"></div></td>\
         </table><span style="vertical-align:middle;" id=altInput></span></div><SPAN id=allListOut></span>';
      t.cont.innerHTML = m;
      document.getElementById('allPlayName').addEventListener ('keypress', function(e) {if ( e.which == 13)  document.getElementById('playSubmit').click();}, false);
      document.getElementById('allAllName').addEventListener ('keypress', function(e) {if ( e.which == 13)  document.getElementById('allSubmit').click();}, false);
      document.getElementById('pbShowFriendlies').addEventListener ('change',function(){
      		if (this.checked){
      			t.paintFriendlyDiv();
      		}else{
      			document.getElementById('pbFriendlyDivs').innerHTML = '';
      		}
      });
	  document.getElementById('pbShowHostiles').addEventListener ('change',function(){
	  		if (this.checked){
	  			t.paintHostilesDiv();
	  		}else{
	  			document.getElementById('pbHostilesDivs').innerHTML = '';
	  		}
	  });
      document.getElementById('allSubmit').addEventListener ('click', t.eventSubmit, false);
      document.getElementById('playSubmit').addEventListener ('click', t.eventPlayerSubmit, false);
      document.getElementById('ffbuidsubmit').addEventListener ('click', t.eventPlayerUIDSubmit, false);
      document.getElementById('allAllName').addEventListener ('focus', function (){document.getElementById('ptallErr').innerHTML='';}, false);
      document.getElementById('allPlayName').addEventListener ('focus', function (){document.getElementById('ptplayErr').innerHTML='';}, false);
      document.getElementById('allListSubmit').addEventListener ('click', t.eventListSubmit, false);
      document.getElementById('idMyAllSubmit').addEventListener ('click', t.showMyAlliance, false);
      document.getElementById('idFindETASelect').addEventListener ('click', t.handleEtaSelect, false);
      document.getElementById('idFindETASelect').disabled = true;
      t.ModelCity=Cities.cities[0];
      t.curPage = 0;
      t.MaxPage = -1;
      t.state = 1;
    }
  },
  paintFriendlyDiv : function () {
  	var t = Tabs.AllianceList;
  	var mess = ' ----- Friendlys ----- <BR>';
  	for (k in Seed.allianceDiplomacies.friendly){
  		mess += '<INPUT id=pbFriendly_'+k+' type=submit value="'+Seed.allianceDiplomacies.friendly[k].allianceName+'">&nbsp;'; //
 	}
  	document.getElementById('pbFriendlyDivs').innerHTML = mess;
   	for (q in Seed.allianceDiplomacies.friendly){
  		document.getElementById('pbFriendly_'+q).addEventListener('click', function(){
  			//alert(this.id.substr(12))
  			uW.PTgetMembers(this.id.substr(12))
  		});
  	}
  },

  paintHostilesDiv : function () {
  	var t = Tabs.AllianceList;
  	var mess = ' ----- Hostiles ----- <BR>';
 	for (k in Seed.allianceDiplomacies.hostile){
  		mess += '<INPUT id=pbHostile_'+k+' type=submit value="'+Seed.allianceDiplomacies.hostile[k].allianceName+'">&nbsp;'; //
 	}
  	document.getElementById('pbHostilesDivs').innerHTML = mess;
  	for (q in Seed.allianceDiplomacies.hostile){
  		document.getElementById('pbHostile_'+q).addEventListener('click', function(){
  			//alert(this.id.substr(11))
  			uW.PTgetMembers(this.id.substr(11))
  		});
  	}
  },
  pName : '',
  eventPlayerSubmit : function (){
    var t = Tabs.AllianceList;
    document.getElementById('ptplayErr').innerHTML='';
    var name = document.getElementById('allPlayName').value;
    name = name.replace(/\'/g,"_");
    t.pName = name;
    if (name.length < 3){
      document.getElementById('ptplayErr').innerHTML = uW.g_js_strings.getAllianceSearchResults.entryatleast3;
      return;
    }
    document.getElementById('altInput').innerHTML = '';
    document.getElementById('allListOut').innerHTML = '<BR><BR><CENTER>'+uW.g_js_strings.commonstr.loadingddd+'</center>';
    t.fetchPlayerList (name, t.eventGotPlayerList);
  },
  
  eventGotPlayerList : function (rslt){
    var t = Tabs.AllianceList;
    if (!rslt.ok){
      document.getElementById('allListOut').innerHTML = rslt.errorMsg;
      return;
    }
    t.playerList = rslt.matchedUsers;
    var uList = [];
    for (k in rslt.matchedUsers)
      uList.push (rslt.matchedUsers[k].userId);     
    t.fetchPlayerStatus (uList, function(r){t.eventGotPlayerOnlineList(r)});    
  },    
    
  eventGotPlayerOnlineList : function (rslt){
    var t = Tabs.AllianceList;
    if (!rslt.ok){
      document.getElementById('allListOut').innerHTML = rslt.errorMsg;
      return;
    }
    var m = '<DIV class=ptstat>'+uW.g_js_strings.recommendSelectedFriends.playersrch+': <B>"'+ t.pName +'"</b></div>\
      <DIV style="height:575px; max-height:575px; overflow-y:auto">\
      <TABLE width=100% align=center class=ptTab cellspacing=0><TR style="font-weight:bold"><TD>'+uW.g_js_strings.commonstr.nametx+' &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp</td>\
      <TD align=right>UID &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp</td><TD>'+uW.g_js_strings.commonstr.might+' &nbsp &nbsp</td><TD> &nbsp; '+uW.g_js_strings.commonstr.online+'</td><TD> &nbsp;Facebook &nbsp; </td><TD width=75%>'+uW.g_js_strings.commonstr.search+' </td></tr>';
    var row=0;
    var cl='';
    for (k in t.playerList){
      var u = t.playerList[k];
      if (++row % 2)
        cl = 'class=ptOddrow ';
      else
        cl = '';
      m += '<TR '+ cl +'valign=top><TD>'+ u.genderAndName +'</td><TD><A target="_tab" href="http://kocmon.com/'+GetServerId()+'/players/'+ u.userId +'">' + u.userId + '</a></td><TD align=right>'+ addCommasInt(u.might) +'</td>\
          <TD>'+ (rslt.data[u.userId]?"&nbsp;<SPAN class=boldDarkRed>"+uW.g_js_strings.commonstr.online+"</span>":"") +'</td>\
          <TD align=center><A target="_tab" href="http://www.facebook.com/profile.php?id='+ u.fbuid +'">'+uW.g_js_strings.commonstr.profile+'</a></td>\
          <TD><SPAN onclick="PTpd(this, '+ u.userId +')"><A>'+uW.g_js_strings.modaltitles.memberdetails+'</a> &nbsp; <BR></span><SPAN onclick="PTpl2(this,'+ u.userId+','+rslt.data[u.userId]+')"><A>'+uW.g_js_strings.modaltitles.leaderboard+'</a><BR></span><SPAN onclick="PCplo(this, \''+ u.userId +'\')"><A>'+uW.g_js_strings.modal_messages_viewreports_view.lastlogin+'</a></span></td></tr>';
    }
    m += '</table></div>';
    document.getElementById('allListOut').innerHTML = m;
  },
  asName : '',
  
  
    eventPlayerUIDSubmit : function (){
    var t = Tabs.AllianceList;
    document.getElementById('ptplayErr').innerHTML='';
    var uid = document.getElementById('allPlayName').value;

	var params = uW.Object.clone(uW.g_ajaxparams);
    params.uid = uid;
    AjaxRequest(uW.g_ajaxpath + "ajax/getUserGeneralInfo.php" + uW.g_ajaxsuffix, {
      method: "post",
      parameters: params,
      onSuccess: function (transport) {
      var rslt = eval("(" + transport.responseText + ")");
	  if (rslt.ok) test = rslt.userInfo[0].name;
	  else document.getElementById('allListOut').innerHTML = '<BR><BR><CENTER>'+uW.g_js_strings.barbarian.erroroccured+'</center>';
      },
      onFailure: function (rslt) {
           document.getElementById('allListOut').innerHTML = '<BR><BR><CENTER>'+uW.g_js_strings.errorcode.err_602+'</center>';
		   return;
      },
    });
    t.pName = t.asName;
    document.getElementById('altInput').innerHTML = '';
    document.getElementById('allListOut').innerHTML = '<BR><BR><CENTER>'+uW.g_js_strings.commonstr.loadingddd+'</center>';
    setTimeout(t.fetchPlayerList,500, test, t.eventGotPlayerList);
  },
	
  clickedPlayerDetail : function (span, uid){
    var t = Tabs.AllianceList;
    span.onclick = '';
    span.innerHTML = uW.g_js_strings.commonstr.search +': '+ uW.g_js_strings.modaltitles.memberdetails + " ...";
    t.fetchPlayerInfo (uid, function (r) {t.gotPlayerDetail(r, span)});
  },

  clickedPlayerLeaderboard : function (span, uid){
    var t = Tabs.AllianceList;
    span.onclick = '';
    span.innerHTML = uW.g_js_strings.commonstr.search +': '+ uW.g_js_strings.modaltitles.leaderboard + " ...";
    t.fetchLeaderboard (uid, function (r) {t.gotPlayerLeaderboard(r, span)});
  },

  clickedPlayerLeaderboard2 : function (span, uid,status){
    var t = Tabs.AllianceList;
    span.onclick = '';
    span.innerHTML = uW.g_js_strings.commonstr.search +': '+ uW.g_js_strings.modaltitles.leaderboard + " ...";
    t.fetchLeaderboard (uid, function (r) {t.gotPlayerLeaderboard2(r, span,uid,status)});
  },
  
  clickedPlayerGetLastLogin : function (span, uid){
     var t = Tabs.AllianceList;
     span.onclick = '';
     span.innerHTML = uW.g_js_strings.commonstr.search +': '+ uW.g_js_strings.modal_messages_viewreports_view.lastlogin + " ...";
     t.fetchPlayerLastLogin (uid, function (r) {t.gotPlayerLastLogin(r, span)});
   },

  gotPlayerLeaderboard2 : function (rslt,span,uid,status){
   // alert(uid+'/'+status);
    var t = Tabs.AllianceList;
    if (!rslt.ok){
      span.innerHTML = rslt.errorMsg;
      return;
    }
    if (rslt.totalResults == 0){
      span.innerHTML = '<B>'+uW.g_js_strings.commonstr.leaderboard+': </b>'+uW.itemlist.i10021.name+'?<BR>';
      return;
    }
    var myA = getMyAlliance ();
    t.dat = [];
    //logit ("gotPlayerLeaderboard2 -1 "+JSON2.stringify(rslt));
    var p = rslt.results[0];
        if ( myA[0] == p.allianceId)
           t.friendEta = true;
        else
           t.friendEta = false;
        for (var c=0; c<p.cities.length; c++){
          t.dat.push ([p.displayName, parseInt(p.might), p.officerType, parseInt(p.numCities), parseInt(p.cities[c].tileLevel),
               parseInt(p.cities[c].xCoord), parseInt(p.cities[c].yCoord), p.cities[c].cityName, 0, status,0,p.userId]);
        }
        t.setDistances (Cities.cities[0].x, Cities.cities[0].y);
        t.ModelCity=Cities.cities[0];
        t.setEta();
        t.fetchPlayerLastLogin (uid, function (r) {t.displayPlayer(p.allianceName,r)});
        //t.fetchPlayerLastLogin();
        //t.displayPlayer (p.allianceId);
  },
  
  
  gotPlayerLeaderboard : function (rslt, span){
    var t = Tabs.AllianceList;
    if (!rslt.ok){
      span.innerHTML = rslt.errorMsg;
      return;
    }
    if (rslt.totalResults == 0){
       span.innerHTML = '<B>'+uW.g_js_strings.commonstr.leaderboard+': </b>'+uW.itemlist.i10021.name+'?<BR>';
      return;
    }
    var p = rslt.results[0];
    var an = p.allianceName;
    if (!an || an=='' || p.officerType==4)
      an = 'none';
    else
      an += ' ('+ officerId2String(p.officerType) +')';
    pStr = JSON2.stringify(p);
    logit (pStr);
    m = '<TABLE cellspacing=0 class=ptTab><TR><TD><B>'+uW.g_js_strings.commonstr.leaderboard+': </b></td><TD colspan=2>'+uW.g_js_strings.commonstr.might +': '+ p.might  +' &nbsp; '+uW.g_js_strings.commonstr.alliance+': '+ an +'</td></tr>'; 
    for (var i=0; i<p.cities.length; i++){
      var c = p.cities[i];
      var created = '';
      if (c.dateCreated && c.dateCreated.substr(0,2)=='20')
        created = ' &nbsp; created: ' + c.dateCreated.substr(0,10);
      m += '<TR><TD align=right><B>City #'+ (i+1) +':</b></td><TD> &nbsp; '+ c.cityName 
      +' (<a onclick="ptGotoMap ('+ c.xCoord +',' +c.yCoord+ ')">'+ c.xCoord +','+ c.yCoord +'</a>)</td><TD width=75%> &nbsp; level: '
        + c.tileLevel +' &nbsp; status: '+ cityStatusString (c.cityStatus) + created +'</td></tr>';
    }  
    span.innerHTML = m + '</table>';
  },
    
  gotPlayerDetail : function (rslt, span){
    var t = Tabs.AllianceList;
    if (!rslt.ok){
      span.innerHTML = rslt.errorMsg;
      return;
    }
    var u = rslt.userInfo[0];
    var a = 'None';
    if (u.allianceName)
      a = u.allianceName +' ('+ getDiplomacy(u.allianceId) + ')';
    var m = '<DIV style="max-width:375x; width:375px; overflow-y:auto"><TABLE cellspacing=0 class=ptTab><TR><TD><B>Details:</b> &nbsp; </td><TD>'+uW.g_js_strings.commonstr.alliance+': '+ a +' &nbsp; '+uW.g_js_strings.commonstr.cities+': '
          + u.cities +' &nbsp; '+uW.g_js_strings.commonstr.population+': '+ u.population +'</td></tr><TR><TD></td><TD></div>'+uW.g_js_strings.commonstr.province+': ';
    var pids = u.provinceIds.split (',');
    var p = [];
    for (var i=0; i<pids.length; i++)
      p.push(uW.provincenames['p'+pids[i]]);
    span.innerHTML = m + p.join (', ') +'</td></tr></table>';
  },

  eventMyAllianceSubmit : function (){
    var t = Tabs.AllianceList;
    document.getElementById('allListOut').innerHTML = '<BR><BR><CENTER>'+uW.g_js_strings.commonstr.loadingddd+'</center>';
    t.fetchAllianceMemberList (getMyAlliance()[0], null, t.eventGotMemberList);
  },  
    
  aName : '',
  eventSubmit : function (){
    var t = Tabs.AllianceList;
    document.getElementById('ptallErr').innerHTML='';
    if (t.clickedAlly){
    	t.aName = t.clickedAllyName;
    }else{
    	t.aName = document.getElementById('allAllName').value;
    }
    if (t.aName.length < 3){
      document.getElementById('ptallErr').innerHTML = uW.g_js_strings.getAllianceSearchResults.entryatleast3;
      return;
    }
    var myA = getMyAlliance ();
    document.getElementById('altInput').innerHTML = '';
    document.getElementById('allListOut').innerHTML = '<BR><BR><CENTER>'+uW.g_js_strings.commonstr.loadingddd+'</center>';
    if (myA[0]!=0 && myA[1].toLowerCase().indexOf(t.aName.toLowerCase())>=0 )
      t.fetchAllianceList (t.aName, myA[0], t.eventGotAllianceList);
    else
      t.fetchAllianceList (t.aName, null, t.eventGotAllianceList);
  },

  eventListSubmit : function (){
    var t = Tabs.AllianceList;
    var myA = getMyAlliance ();
    document.getElementById('allListOut').innerHTML = '<BR><BR><CENTER>'+uW.g_js_strings.commonstr.loadingddd+'</center>';
    if (myA[0]!=0  ) {
       t.curPage=1;
       t.fetchOtherAllianceInfo ( 1, t.eventGotOtherAlliancePage);
       //document.getElementById('allGotoPage').disabled = false;
    }
    else {
       document.getElementById('allListOut').innerHTML = uW.g_js_strings.membersInfo.youmustbelong;
    }
  },

  eventGotAllianceList : function (rslt){
    var t = Tabs.AllianceList;
    if (!rslt.ok){
      document.getElementById('allListOut').innerHTML = rslt.errorMsg;
      return;
    }
    var m = '<DIV class=ptstat>'+uW.g_js_strings.commonstr.alliances+'<B>"'+ t.aName +'"</b></div>\
    <TABLE><TR style="font-weight:bold"><TD class=xtab>'+uW.g_js_strings.commonstr.alliance+'</td><TD class=xtab>'+uW.g_js_strings.commonstr.rank+'</td><TD class=xtab>'+uW.g_js_strings.commonstr.members+'</td>\
        <TD align=right class=xtab>'+uW.g_js_strings.commonstr.might+'</td><TD class=xtab>'+uW.g_js_strings.getAllianceSearchResults.currdiplo+'</td><TD class=xtab>'+uW.g_js_strings.commonstr.members+'</td><TD class=xtab>'+uW.g_js_strings.commonstr.viewmap+'</td></tr>';
    for (k in rslt.alliancesMatched){
      var all = rslt.alliancesMatched[k];
      var dip = '';
      if (all.relation && all.relation==1)
        dip = uW.g_js_strings.commonstr.friendly;
      else if (all.relation && all.relation==2)
        dip = uW.g_js_strings.commonstr.hostile;
      m += '<TR><TD class=xtab>'+ all.allianceName +'</td><TD align=right class=xtab>'+ all.ranking +'</td><TD align=right class=xtab>'+ all.membersCount +'</td>\
       <TD align=right class=xtab>'+ addCommasInt(all.might) +'</td><TD class=xtab>'+ dip +'</td>\
       <TD class=xtab><a onclick="PTgetMembers('+ all.allianceId +')">'+uW.g_js_strings.commonstr.members+'</a></td>\
        <TD class=xtab><a onclick="PTPaintMembers('+ all.allianceId +')">'+uW.g_js_strings.commonstr.viewmap+'</a></td></tr>';
    }
    document.getElementById('allListOut').innerHTML = m;
  },


  showMyAlliance : function (){
    var t = Tabs.AllianceList;
    var myA = getMyAlliance ();
    document.getElementById('allListOut').innerHTML = '<BR><BR><CENTER>'+uW.g_js_strings.commonstr.loadingddd+'</center>';
    if (myA[0]!=0  ) {
       t.eventGetMembers(myA[0],false);
    }
    else {
       document.getElementById('allListOut').innerHTML = uW.g_js_strings.membersInfo.youmustbelong;
    }
  },

  curPage : 0,
  MaxPage : 0,

  eventListNext : function (amt){
    var t = Tabs.AllianceList;
    if( parseInt(amt) >= 9999 )
       t.curPage = t.MaxPage;
    else {
	    t.curPage = parseInt(t.curPage) + parseInt(amt);
	    if ( t.curPage > t.MaxPage) {
	      t.curPage = t.MaxPage;
	    }
    }
    document.getElementById('allListOut').innerHTML = '<BR><BR><CENTER>'+uW.g_js_strings.commonstr.loadingddd+'</center>';
    t.fetchOtherAllianceInfo (t.curPage, t.eventGotOtherAlliancePage);
  },

  eventListPrev : function (amt){
    var t = Tabs.AllianceList;
    if(amt <= -1)
       t.curPage = 1;
    else {
	    t.curPage-=amt;
	    if ( t.curPage < 1 ) {
	      t.curPage = 1;
	    }
    }
    document.getElementById('allListOut').innerHTML = '<BR><BR><CENTER>'+uW.g_js_strings.commonstr.loadingddd+'</center>';
    t.fetchOtherAllianceInfo (t.curPage, t.eventGotOtherAlliancePage);
  },

   eventGotOtherAlliancePage : function (rslt){
    var t = Tabs.AllianceList;

    if (!rslt.ok){
      document.getElementById('allListOut').innerHTML = rslt.errorMsg;
      return;
    }

    //	document.getElementById('idPageNum').value = t.curPage;

    t.MaxPage=rslt.noOfPages;
    //document.getElementById('idMaxPageNum').innerHTML = 'of ' + t.MaxPage;

    var m = '<div style="overflow:auto; height:556px;width:650px;"><TABLE><thead><TR style="font-weight:bold"> \
        <th class=xtab>'+uW.g_js_strings.modaltitles.alliance+'</th><th class=xtab>'+uW.g_js_strings.commonstr.rank+'</th><th class=xtab>'+uW.g_js_strings.commonstr.members+'</th>\
        <th align=right class=xtab>'+uW.g_js_strings.commonstr.might+'</th><th class=xtab>'+uW.g_js_strings.getAllianceSearchResults.currdiplo+'</th><th class=xtab>'+uW.g_js_strings.commonstr.members+'</th><th class=xtab>'+uW.g_js_strings.commonstr.viewmap+'</th></tr></thead><tbody>';
    document.getElementById('allListOut').innerHTML = m;

    for (var i=0; i<rslt.otherAlliances.length; i++) {
      var alliance = rslt.otherAlliances[i];
      var dip = '';
      dip = getDiplomacy(alliance.allianceId);

      m += '<TR class="'+ dip + '"><TD class=xtab>' + alliance.name +'</td><TD align=right class=xtab>'+ alliance.ranking +'</td><TD align=right class=xtab>'+ alliance.membersCount +'</td>\
       <TD align=right class=xtab>'+ addCommasInt(alliance.might) +'</td><TD class=xtab>'+ dip +'</td>\
       <TD class=xtab><a onclick="PTgetMembers('+ alliance.allianceId +')">'+uW.g_js_strings.commonstr.members+'</a></td>\
	       <TD class=xtab><a onclick="PTPaintMembers('+ alliance.allianceId +')">'+uW.g_js_strings.commonstr.viewmap+'</a></td></tr>';
    }
    m += '</tbody></TABLE><div style="font-weight:bold"; height:20px;width:560px; ><span> <a onclick="PTalClickPrev(-1)"> [|<] </a><a onclick="PTalClickPrev(10)"> [-10] </a><a onclick="PTalClickPrev(5)"> [-5] </a><a onclick="PTalClickPrev(1)"> [<] </a> \
          <a onclick="PTalClickNext(1)"> [>] </a><a onclick="PTalClickNext(5)"> [+5] </a><a onclick="PTalClickNext(10)"> [+10] </a><a onclick="PTalClickNext(9999)"> [>|] </a> </span></div>';
    m += '</div>';
    document.getElementById('allListOut').innerHTML = m;
 },

  showCurrentPage : function (){
    var t = Tabs.AllianceList;
    var myA = getMyAlliance ();

    document.getElementById('allListOut').innerHTML = '<BR><BR><CENTER>'+uW.g_js_strings.commonstr.loadingddd+'</center>';
    if (myA[0]!=0  ) {
       t.fetchOtherAllianceInfo ( t.curPage, t.eventGotOtherAlliancePage);
    }
    else {
       t.fetchOtherAllianceInfo ( t.curPage, t.eventGotOtherAlliancePage);
    }

  },

  eventGotMemberList : function (rslt){
    var t = Tabs.AllianceList;
    if (!rslt.ok){
      document.getElementById('allListOut').innerHTML = rslt.errorMsg;
      return;
    }
    t.memberListRslt = rslt;
    var uList = [];
    for (k in rslt.results)
      uList.push (rslt.results[k].userId);     
    t.fetchPlayerStatus (uList, function(r){t.eventGotMemberOnlineList(r)});    
  },    
    
  eventGotMemberOnlineList : function (rslt){
    var t = Tabs.AllianceList;
    var numInvalid = 0;
    var numPlayers = 0;
    var myA = getMyAlliance ();
    t.dat = [];
    for (var i=0; i<t.memberListRslt.results.length; i++){
      p = t.memberListRslt.results[i];
      if (p.userId == 0){
        ++numInvalid;
      } else {
        ++numPlayers;
        if ( myA[0] == p.allianceId)
           t.friendEta = true;
        else
           t.friendEta = false;
        for (var c=0; c<p.cities.length; c++){
          t.dat.push ([p.displayName, parseInt(p.might), p.officerType, parseInt(p.numCities), parseInt(p.cities[c].tileLevel),
               parseInt(p.cities[c].xCoord), parseInt(p.cities[c].yCoord), p.cities[c].cityName, 0, rslt.data[p.userId]?1:0,'--',p.userId]);
        }
      }
    }
    t.setDistances (Cities.cities[0].x, Cities.cities[0].y);
    t.ModelCity=Cities.cities[0];
    t.setEta();
    t.displayMembers (t.memberListRslt.allianceName, numPlayers);
  },

  // sort and display
  reDisp : function (){
    var t = Tabs.AllianceList;
    function sortFunc (a, b){
      var t = Tabs.AllianceList;
      if (typeof(a[t.sortColNum]) == 'number'){
        if (t.sortDir > 0)
          return a[t.sortColNum] - b[t.sortColNum];
        else
          return b[t.sortColNum] - a[t.sortColNum];
      } else if (typeof(a[t.sortColNum]) == 'boolean'){
// TODO !!        
return 0;        
      } else {
        if (t.sortDir > 0)
          return a[t.sortColNum].localeCompare(b[t.sortColNum]);
        else
          return b[t.sortColNum].localeCompare(a[t.sortColNum]);
      }
    }
    t.dat.sort (sortFunc);
    var m = '';
    for (var i=0; i<t.dat.length; i++){
      m += '<TR style="max-height:30px"><TD class=xxtab>'+ t.dat[i][0] +'</td><TD align=right class=xxtab>'+ addCommasInt(t.dat[i][1]) 
         +'</td><TD align=center class=xxtab>'+ t.dat[i][3] +'</td><TD class=xxtab>'+ officerId2String(t.dat[i][2])                       
         +'</td><TD class=xxtab>'+ (t.dat[i][9]?'<SPAN class=boldDarkRed>ONLINE</span>':'') +'</td><TD class=xxtab>'+ t.dat[i][7] +'</td><TD align=right class=xxtab>'+ t.dat[i][4] 
         +'</td><TD align=center class=xxtab><DIV onclick="ptGotoMap('+ t.dat[i][5] +','+ t.dat[i][6] +')"><A>'+ t.dat[i][5] +','+ t.dat[i][6] +'</a></div></td>\
            <TD align=right class=xxtab style="padding-right:20px;">'+ t.dat[i][8].toFixed(2) +'</td>\
         </td><TD  nowrap class=xxtab>'+ (t.dat[i][10]?'<SPAN>'+ (t.dat[i][10]>0?timestr(t.dat[i][10],1):'--') +'</span>':'<SPAN>--</span>') +'<td class=xxtab><SPAN onclick="PCplo(this, \''+ t.dat[i][11] +'\')"><A>'+uW.g_js_strings.modal_messages_viewreports_view.lastlogin+'</a></span><td></tr>';
    }
    var tbody = document.getElementById('allBody');
    tbody.style.maxHeight = '';
    tbody.innerHTML = m;


    if (parseInt(tbody.clientHeight) > 470){
      tbody.style.height = '470px';
      tbody.style.maxHeight = '470px';
    }
//new CtableToText('tabAllMembers').toText();
  },


  setDistances : function (x, y){
    var t = Tabs.AllianceList;
    for (var i=0; i<t.dat.length; i++)
      t.dat[i][8] = distance (x, y, t.dat[i][5], t.dat[i][6]);
  },

  friendEta:false,

  setEta : function (){
    var t = Tabs.AllianceList;
    for (var i=0; i<t.dat.length; i++) {
      if (t.dat[i][8]) {
        var eta = t.estETA(parseFloat(t.dat[i][8]));
        if (t.friendEta)
           t.dat[i][10] = eta.friendETA;
        else
           t.dat[i][10] = eta.ETA;
      }
    }
  },



  handleEtaSelect : function (){
    var t = Tabs.AllianceList;
    t.setEta();
    t.reDisp();
  },

  sortColNum : 8,
  sortDir : 1,

  displayMembers : function (allName, numPlayers){
    var t = Tabs.AllianceList;
    function alClickSort (e){
      var t = Tabs.AllianceList;
      var newColNum = e.id.substr(8);
      document.getElementById('clickCol'+t.sortColNum).className = 'clickable';
      e.className='clickable clickableSel';
      if (newColNum == t.sortColNum)
        t.sortDir *= -1;
      else
        t.sortColNum = newColNum;
      t.reDisp();
    }
    uW.PTalClickSort = alClickSort;
    var m = '<STYLE>.clickable{background-color:#ddd; border:2px outset; border-color:#555; padding-left:5px; padding-right:5px}\
            .clickableSel{background-color:#ffffcc;}\
            .xxtab{background-color:none; padding-left:5px; padding-right:5px;} </style>\
      <DIV class=ptstat ><TABLE id=tabAllMembers cellpadding=0  width=100%><TR font-weight:bold"><TD class=xtab> &nbsp; '+ allName +'</td>\
        <TD class=xtab width=80% align=center>'+uW.g_js_strings.commonstr.distance+ uW.g_js_strings.commonstr.from+' <SPAN id=distFrom>'+ Cities.cities[0].name +' ('+ Cities.cities[0].x +','+ Cities.cities[0].y +')</span></td><TD class=xtab align=right>'+ numPlayers + uW.g_js_strings.commonstr.members+'&nbsp; </td></tr></table></div>\
      <div style="max-height:545px; height:545px; max-width:745px; width:745px; overflow-y:auto;"><TABLE id=tabAllMembers align=center cellpadding=0 cellspacing=0><THEAD style="overflow-y:hidden;">\
      <TR style="font-weight:bold"><TD id=clickCol0 onclick="PTalClickSort(this)" class=clickable><A><DIV>'+uW.g_js_strings.commonstr.player+'</div></a></td>\
        <TD id=clickCol1 onclick="PTalClickSort(this)" class=clickable align=center><A><DIV>'+uW.g_js_strings.commonstr.might+'</a></div></td>\
        <TD id=clickCol3 onclick="PTalClickSort(this)" class=clickable><A><DIV>'+uW.g_js_strings.commonstr.cities+'</a></div></td>\
        <TD id=clickCol2 onclick="PTalClickSort(this)" class=clickable align=center><A><DIV>'+uW.g_js_strings.commonstr.rank+'</a></div></td>\
        <TD id=clickCol9 onclick="PTalClickSort(this)" class=clickable align=center><A><DIV>'+uW.g_js_strings.commonstr.online+'</a></div></td>\
        <TD id=clickCol7 onclick="PTalClickSort(this)" class=clickable><A><DIV>'+uW.g_js_strings.MapObject.cityname+'</a></div></td>\
        <TD id=clickCol4 onclick="PTalClickSort(this)" class=clickable><A><DIV>'+uW.g_js_strings.commonstr.lvl+'</a></div></td>\
        <TD id=clickCol5 onclick="PTalClickSort(this)" class=clickable><A><DIV>'+uW.g_js_strings.commonstr.coordinates+'</a></div></td>\
        <TD id=clickCol8 onclick="PTalClickSort(this)" class=clickable><A><DIV>'+uW.g_js_strings.commonstr.distance+'</a></div></td>\
        <TD id=clickCol10 onclick="PTalClickSort(this)" class=clickable><A><DIV>'+uW.g_js_strings.attack_generateincoming.estimatedarrival+'</a></div></td>\
        <TD class=clickable><A><DIV>'+uW.g_js_strings.modal_messages_viewreports_view.lastlogin+'</a></div></td></tr></thead>\
      <TBODY id=allBody style="background-color:#ffffff;"></tbody></table></div>';
      
    document.getElementById('allListOut').innerHTML = m; //style="top:670px; left:0px; position:absolute;
    document.getElementById('altInput').innerHTML = '<HR><TABLE width=100% cellpaddding=0><TR align=center>\
        <TD class=xtab>Show distance from: &nbsp; X: <INPUT size=2 type=text id=plyrX /> Y: <INPUT size=2 type=text id=plyrY /> &nbsp; Or, choose city: <span id=dmcoords></span></td></tr></table>';
    document.getElementById('clickCol'+t.sortColNum).className = 'clickable clickableSel';

    t.reDisp();
    new CdispCityPicker ('plyrdcp', document.getElementById ('dmcoords'), true, t.eventCoords, 0).bindToXYboxes(document.getElementById('plyrX'), document.getElementById('plyrY'));
    
    document.getElementById('dmcoords').addEventListener ('click', function(){ 
    	//alert(t.eventCoords);
    	//t.clickCity(CdispCityPicker);
    },false);	
    document.getElementById('idFindETASelect').disabled = false;
  },
  
  displayPlayer : function (allName,rslt){
    var t = Tabs.AllianceList;
    function alClickSort (e){
      var t = Tabs.AllianceList;
      var newColNum = e.id.substr(8);
      document.getElementById('clickCol'+t.sortColNum).className = 'clickable';
      e.className='clickable clickableSel';
      if (newColNum == t.sortColNum)
        t.sortDir *= -1;
      else
        t.sortColNum = newColNum;
      t.reDisp();
    }
    uW.PTalClickSort = alClickSort;
    var m = '<STYLE>.clickable{background-color:#ddd; border:2px outset; border-color:#555; padding-left:5px; padding-right:5px}\
            .clickableSel{background-color:#ffffcc;}\
            .xxtab{background-color:none; padding-left:5px; padding-right:5px;} </style>\
            <DIV class=ptstat ><TABLE id=tabAllMembers cellpadding=0  width=100%><TR font-weight:bold"><TD class=xtab>Alliance: '+ allName +'</td>\
              <TD class=xtab width=80% align=center>'+uW.g_js_strings.modal_messages_viewreports_view.lastlogin+': <SPAN id=lastlogin>'+  rslt.playerInfo.lastLogin+'</span></td><TD class=xtab align=right></td></tr></table></div>\
      <div style="max-height:470px; height:470px; overflow-y:auto;"><TABLE id=tabAllMembers align=center cellpadding=0 cellspacing=0><THEAD style="overflow-y:hidden;">\
      <TR style="font-weight:bold"><TD id=clickCol0 onclick="PTalClickSort(this)" class=clickable><A><DIV>Player</div></a></td>\
        <TD id=clickCol1 onclick="PTalClickSort(this)" class=clickable align=center><A><DIV>Might</a></div></td>\
        <TD id=clickCol3 onclick="PTalClickSort(this)" class=clickable><A><DIV>Cities</a></div></td>\
        <TD id=clickCol2 onclick="PTalClickSort(this)" class=clickable align=center><A><DIV>Rank</a></div></td>\
        <TD id=clickCol9 onclick="PTalClickSort(this)" class=clickable align=center><A><DIV>Online</a></div></td>\
        <TD id=clickCol7 onclick="PTalClickSort(this)" class=clickable><A><DIV>City Name</a></div></td>\
        <TD id=clickCol4 onclick="PTalClickSort(this)" class=clickable><A><DIV>Lvl</a></div></td>\
        <TD id=clickCol5 onclick="PTalClickSort(this)" class=clickable><A><DIV>Coords</a></div></td>\
        <TD id=clickCol8 onclick="PTalClickSort(this)" class=clickable><A><DIV>Distance</a></div></td>\
        <TD id=clickCol10 onclick="PTalClickSort(this)" class=clickable><A><DIV>Eta</a></div></td>\
		<TD class=clickable><A><DIV>'+uW.g_js_strings.modal_messages_viewreports_view.lastlogin+'</a></div></td></tr></thead>\
      <TBODY id=allBody style="background-color:#ffffff;"></tbody></table></div>\
      <DIV  width:100%; style="top:670px; left:0px; position:absolute; background-color:#ffffff; border-top:1px solid; margin-top:8px; color:#700; font-weight:bold;">';
    document.getElementById('allListOut').innerHTML = m;  //style="top:670px; left:0px; position:absolute;
    document.getElementById('altInput').innerHTML = '<HR><TABLE width=100% cellpaddding=0><TR align=center>\
        <TD class=xtab>Show distance from: &nbsp; X: <INPUT size=2 type=text id=plyrX /> Y: <INPUT size=2 type=text id=plyrY /> &nbsp; Or, choose city: <span id=dmcoords></span></td></tr></table>';
    document.getElementById('clickCol'+t.sortColNum).className = 'clickable clickableSel';

    t.reDisp();
    new CdispCityPicker ('plyrdcp', document.getElementById ('dmcoords'), true, t.eventCoords, 0).bindToXYboxes(document.getElementById('plyrX'), document.getElementById('plyrY'));
    document.getElementById('idFindETASelect').disabled = false;
    
  },
  
  eventCoords : function (city, x, y){
    var t = Tabs.AllianceList;
    var m = '';
    if (city != null)
      m = city.name +' ('+ city.x +','+ city.y +')';
    else
      m = x +','+ y;
    var distFrom = document.getElementById('distFrom');
    if (distFrom)
        distFrom.innerHTML = m;
    t.ModelCity=city;
    if (city !=null) t.JumpCity(city.name);
    t.setDistances(x,y);
    t.setEta();
    t.reDisp();
  },

  eventGetMembers : function (aid){
    var t = Tabs.AllianceList;
    document.getElementById('allListOut').innerHTML = '<BR><BR><CENTER>'+uW.g_js_strings.commonstr.loadingddd+'</center>';
    t.fetchAllianceMemberList (aid, null, t.eventGotMemberList);
  },

  fetchAllianceMemberList : function (allianceId, allianceName, notify) {
    var t = Tabs.AllianceList;
    var params = uW.Object.clone(uW.g_ajaxparams);
    params.perPage = 100;
    if (allianceName)
      params.allianceName = allianceName;
    if (allianceId && allianceId != 0)
      params.allianceId = allianceId;
    new MyAjaxRequest(uW.g_ajaxpath + "ajax/getUserLeaderboard.php" + uW.g_ajaxsuffix, {
      method: "post",
      parameters: params,
      onSuccess: function (rslt) {
        notify (rslt);
      },
      onFailure: function (rslt) {
        notify ({errorMsg:'AJAX error'});
      },
    });
  },

  GetDataForMap : function (allianceId) {
    var t = Tabs.AllianceList;
    var params = uW.Object.clone(uW.g_ajaxparams);
    var Data=[];
    params.perPage = 100;
    params.allianceId = allianceId;
    
    new MyAjaxRequest(uW.g_ajaxpath + "ajax/getUserLeaderboard.php" + uW.g_ajaxsuffix, {
      method: "post",
      parameters: params,
      onSuccess: function (rslt) {
      	var city = '';
      	for (var i=0; i<rslt.results.length; i++) {
      		//alert(rslt.results[i].toSource());
      	    if (rslt.results[i]['userId'] !=0){
	      	    player = rslt.results[i]['cities'];
	      	    for (var ii=0; ii<player.length; ii++) 
	      			Data.push ({X:player[ii]['xCoord'],Y:player[ii]['yCoord']});
	    	}  	
        }
        if (Data != []) t.PaintDataOnMap(Data);
      },
      onFailure: function (rslt) {
        notify ({errorMsg:'AJAX error'});
      },
    });
  },
  
  PaintDataOnMap : function(Data){
  		var provMapCoordsA = {imgWidth:710, imgHeight:708, mapWidth:670, mapHeight:670, leftMargin:31, topMargin:19};  
  		var map = '<DIV id=ptAlliProvMap style="height:'+ provMapCoordsA.imgHeight +'px; width:'+ provMapCoordsA.imgWidth +'px; background-repeat:no-repeat; background-image:url(\''+ URL_PROVINCE_MAP +'\')"></div>';
  	    
		//alert(Data.toSource());
		//Data = [{X:"700", Y:"700"}, {X:"600", Y:"600"}, {X:"500", Y:"500"},{X:"400", Y:"400"},{X:"300", Y:"300"},{X:"200", Y:"200"},{X:"100", Y:"100"},{X:"0", Y:"0"},{X:"750", Y:"750"}, {X:"650", Y:"650"}, {X:"550", Y:"550"},{X:"450", Y:"450"},{X:"350", Y:"350"},{X:"250", Y:"250"},{X:"150", Y:"150"},{X:"50", Y:"50"}];
  	    			
		document.getElementById('allListOut').innerHTML = map;
		var eMap =  document.getElementById('ptAlliProvMap');
		
		
		
		
		
		for (var cc=0; cc<Seed.cities.length; cc++) {
		    var city = Seed.cities;
		    var Xplot = parseInt((provMapCoordsA.mapWidth * parseInt(city[cc][2])) / 750);
		    var Yplot = parseInt((provMapCoordsA.mapHeight * parseInt(city[cc][3])) / 750);
		    var cf = document.createElement ('div');
		    cf.style.background = 'black';
		    cf.style.opacity = '1.0';
		    cf.style.position='relative';
		    cf.style.display='block';
		    cf.style.width='14px';
		    cf.style.height='16px';
		    cf.style.border='1px solid #fff';
		    cf.style.color = 'white';
		    cf.style.textAlign = 'center';
		    cf.style.top = (Yplot+provMapCoordsA.topMargin-(cc*16)-8) +'px';      
		    cf.style.left = (Xplot+provMapCoordsA.leftMargin-7) +'px';
		    cf.innerHTML = (cc+1) +'';
		    eMap.appendChild(cf);
		    
		}

		for (var i=0;i<Data.length;i++) {
			var x = parseInt(Data[i]['X']);
			var y = parseInt(Data[i]['Y']);
  	        var xplot = parseInt((provMapCoordsA.mapWidth * x) / 750);
  	        var yplot = parseInt((provMapCoordsA.mapHeight * y) / 750);
  	    	var ce= document.createElement ('div');
  	    		ce.style.background = 'red';
  	    		ce.style.opacity = '1.0';
  	    		ce.style.position='relative';
  	    		ce.style.display='block';
  	    		ce.style.width='4px';
  	    		ce.style.height='4px';
  	    		ce.style.color = 'white';
  	    		ce.style.textAlign = 'center';
  	    	ce.style.top = (yplot+provMapCoordsA.topMargin -(4*i)-((Seed.cities.length)*18)) +'px';      
  	    	ce.style.left = (xplot+provMapCoordsA.leftMargin -2) +'px';
  	    	//ce.innerHTML = '<span onmouseover="this.innerText='+x+','+y+'" onclick="">A</span>';
  	    	ce.innerHTML = '<DIV onclick="ptGotoMap('+ x +','+ y +')">&nbsp;</div>';
  	        eMap.appendChild(ce);
  	   }
  	   
  	   
  },
  
  fetchLeaderboard : function (uid, notify) {
    var t = Tabs.AllianceList;
    var params = uW.Object.clone(uW.g_ajaxparams);
    params.userId = uid;
    new MyAjaxRequest(uW.g_ajaxpath + "ajax/getUserLeaderboard.php" + uW.g_ajaxsuffix, {
      method: "post",
      parameters: params,
      onSuccess: function (rslt) {
        notify (rslt);
      },
      onFailure: function (rslt) {
        notify ({errorMsg:'AJAX error'});
      },
    });
  },

  fetchAllianceList : function (allianceName, myAid, notify) {   // at least 3 chars :)
    var t = Tabs.AllianceList;
    function combineResults (rsltA, rsltM, notify){
      if (!rsltA.ok){
        if (rsltA.msg.indexOf("No alliance found under")!=0 || !rsltM.ok){
          notify (rsltA);
          return;
        }
        rsltA.ok = true;
        rsltA.count = 0;
        rsltA.alliancesMatched = {};
      }
      if (rsltM.ok){
        rsltA.alliancesMatched['a'+rsltM.allianceInfo.allianceId] = {allianceId: rsltM.allianceInfo.allianceId, allianceName: rsltM.allianceInfo.allianceName,
              membersCount: rsltM.allianceInfo.members, relation: null, might: rsltM.allianceInfo.might, ranking: rsltM.allianceInfo.ranking};
        ++rsltA.count;
      }
      notify (rsltA);
    }
    var params = uW.Object.clone(uW.g_ajaxparams);
    params.allianceName = allianceName;
    new MyAjaxRequest(uW.g_ajaxpath + "ajax/allianceGetSearchResults.php" + uW.g_ajaxsuffix, {
      method: "post",
      parameters: params,
      onSuccess: function (rslt) {
        if (myAid!=null && myAid>0)
          t.fetchMyAllianceInfo  (function (r){ combineResults (rslt, r, notify)});
        else
          notify (rslt);
      },
      onFailure: function (rslt) {
        notify ({errorMsg:'AJAX error'});
      },
    });
  },

  fetchOtherAllianceInfo : function (pageNum, notify){    // as in alliance list, sorted by rank, 10 per page
    var params = uW.Object.clone(uW.g_ajaxparams);
    params.pageNo = pageNum;
    params.cityId = uW.currentcityid;
    new MyAjaxRequest(uW.g_ajaxpath + "ajax/allianceGetOtherInfo.php" + uW.g_ajaxsuffix, {
      method: "post",
      parameters: params,
      onSuccess: function (rslt) {
        notify (rslt);
      },
      onFailure: function (rslt) {
        notify ({errorMsg:'AJAX error'});
      },
    });
  },

  fetchMyAllianceInfo : function (notify){
    var params = uW.Object.clone(uW.g_ajaxparams);
    new MyAjaxRequest(uW.g_ajaxpath + "ajax/allianceGetInfo.php" + uW.g_ajaxsuffix, {
      method: "post",
      parameters: params,
      onSuccess: function (rslt) {
        notify (rslt);
      },
      onFailure: function (rslt) {
        notify ({errorMsg:'AJAX error'});
      },
    });
  },

  fetchPlayerList : function (name, notify){  // at least 3 chars!! 
    var params = uW.Object.clone(uW.g_ajaxparams);
    params.searchName = name;
    params.subType = "ALLIANCE_INVITE";
    new MyAjaxRequest(uW.g_ajaxpath + "ajax/searchPlayers.php" + uW.g_ajaxsuffix, {
      method: "post",
      parameters: params,
      onSuccess: function (rslt) {
        notify (rslt);
      },
      onFailure: function (rslt) {
        notify ({errorMsg:'AJAX error'});
      },
    });
  },

  fetchPlayerInfo : function (uid, notify){
    var params = uW.Object.clone(uW.g_ajaxparams);
    params.uid = uid;
    new MyAjaxRequest(uW.g_ajaxpath + "ajax/getUserGeneralInfo.php" + uW.g_ajaxsuffix, {
      method: "post",
      parameters: params,
      onSuccess: function (rslt) {
        notify (rslt);
      },
      onFailure: function (rslt) {
        notify ({errorMsg:'AJAX error'});
      },
    });
  },
  
/***
ajax/getOnline.php:
  (string) ok = true
  (object) data = [object Object]
    (boolean) 4394121 = false
  (undefined) errorMsg: null = null
***/
  fetchPlayerStatus : function (uidArray, notify){
    var params = uW.Object.clone(uW.g_ajaxparams);
    params.checkArr = uidArray.join(',');
    new MyAjaxRequest(uW.g_ajaxpath + "ajax/getOnline.php" + uW.g_ajaxsuffix, {
      method: "post",
      parameters: params,
      onSuccess: function (rslt) {
        notify (rslt);
      },
      onFailure: function (rslt) {
        notify ({errorMsg:'AJAX error'});
      },
    });
  },
  
  fetchPlayerLastLogin : function (uid, notify){
      var params = uW.Object.clone(uW.g_ajaxparams);
      params.pid = uid;
      new MyAjaxRequest(uW.g_ajaxpath + "ajax/viewCourt.php" + uW.g_ajaxsuffix, {
        method: "post",
        parameters: params,
        onSuccess: function (rslt) {
          notify (rslt);
        },
        onFailure: function (rslt) {
          notify ({errorMsg:'AJAX error'});
        },
      });
    },
    
    gotPlayerLastLogin : function (rslt, span){
        var t = Tabs.AllianceList;
        if (!rslt.ok){
          span.innerHTML = rslt.errorMsg;
          return;
        }
    
        var p = rslt.playerInfo;
        var lastLogin = rslt.playerInfo.lastLogin;
    
        if (lastLogin) {
          m = '<span style="color:black">'+uW.g_js_strings.modal_messages_viewreports_view.lastlogin+': '+lastLogin+'</span>';
        } else {
           m = '<span style="color:red">No login date found: '+lastLogin+'</span>';
        }
        span.innerHTML = m + '';
      },

  ModelCity : {},

  estETA : function(dist) { // Need Relief Station Levels to estimate transport, reinf, or reassign times. 
    var t = Tabs.AllianceList;
    var ret={ETA:0,etaStr:'NA',friendETA:0,friendEtaStr:'NA'};    
    var cityID;
    if (dist <= 0) return ret;
    var EtaType = document.getElementById('idFindETASelect');
    var baseSpeedSel = EtaType.options[EtaType.selectedIndex].value;
    var m = baseSpeedSel.split(',');
    var horse = 0;
    var baseSpeed = 0;
    if(m) {
      horse = parseInt(m[0]);
      baseSpeed = parseInt(m[1]);
    }
    if (baseSpeed == 0) return ret;
    var mmLvl = parseInt(Seed.tech.tch11);//Magical Mapping
    var Speed = 0;
    if (horse){
   //HorsesSiegeSpeed = Base * (1 + MM/10) * (1 + AH/20) 
      var hsLvl = parseInt(Seed.tech.tch12);//Alloy Horse Shoes
      Speed = baseSpeed * (1 + mmLvl/10.0) * (1 + hsLvl/20.0);
    }
    else {
    //FootSpeed = Base * (1 + MM/10)
      Speed = baseSpeed * (1 + mmLvl/10.0);
    }
    //Grid Speed (tiles/second) = Speed (100ths/min) / 6000 
    var gSpeed = 0;
    var estSec;
    if (Speed>0) {
      gSpeed = Speed/6000.0;//0.48333 mm=10, hs=9
      estSec = (parseFloat(dist)/gSpeed).toFixed(0);
    }
    ret.ETA = (parseInt((estSec+''))+30); 
    ret.etaStr = timestr (ret.ETA,1);
    //ret.etaStr = ret.ETA + ', ' + timestr (ret.ETA,1);
    //RS - Cities Relief Station Level
    //Friendly Speed = Speed * (1 + RS/2)
    if (t.ModelCity) {
      cityID = t.ModelCity.id;
      var building = getCityBuilding (cityID, 18);
      if (building) {
        fSpeed = Speed * (1 + parseInt(building.maxLevel)/2);
        gSpeed = fSpeed/6000;
        estSec = (dist/gSpeed).toFixed(0);
        ret.friendETA = parseInt((estSec+''))+30; 
        ret.friendEtaStr = timestr ((ret.friendETA+''),1);
      }
   }
    return ret;
  },
  
     JumpCity:function(city) {
   		var t = Tabs.AllianceList;
   		for (i=0;i<Seed.cities.length;i++) {
   			if (Seed.cities[i][1]==city) var cityNum=i;
   		}
   		cityNum++;
   		var obj = document.getElementById('citysel_'+cityNum);
	   	return t.ClickWin(window,obj,'click');
   },
   
   ClickWin:function(win,obj,evtName) {
   	var evt = win.document.createEvent("MouseEvents");
   	evt.initMouseEvent(evtName, true, true, win,
   		0, 0, 0, 0, 0, false, false, false, false, 0, null);
   	return !obj.dispatchEvent(evt);
   },
   
   
};


/*********************************** Test TAB ***********************************/

Tabs.Test = {
  tabOrder : 100,
  tabDisabled : !ENABLE_TEST_TAB,
  cont : null,

  init : function (div){
    var t = Tabs.Test;
    t.cont = div;
	var citySelect = '   <SELECT id=fakeCity>';
	    for (var c=0; c<Cities.numCities; c++) {
		 	 aCity = Cities.cities[c].name + ' ('+Cities.cities[c].x + ','+ Cities.cities[c].y+')';
	         citySelect += '<option value=\''+c+'\'>'+aCity+'</option>';
	    }
	    citySelect += '</select>';
    var m = '<TABLE><TR><TD align=right>Scout: </td><TD><INPUT type=checkbox id=fakeIsScout></td></tr>\
        <TR><TD align=right>Wild: </td><TD><INPUT type=checkbox id=fakeIsWild></td></tr>\
        <TR><TD align=right>False Report: </td><TD><INPUT type=checkbox disabled id=fakeFalse></td></tr>\
        <TR><TD align=right>Seconds: </td><TD><INPUT type=text size=4 value=300 id=fakeSeconds></td></tr>\
        <TR><TD align=right># of Supply: </td><TD><INPUT type=text size=6 value=0 id=faketroop0></td></tr>\
		<TR><TD align=right># of Militia: </td><TD><INPUT type=text size=6 value=0 id=faketroop1></td></tr>\
		<TR><TD align=right># of Scouts: </td><TD><INPUT type=text size=6 value=0 id=faketroop2></td></tr>\
		  <TR><TD align=right># of Pikes: </td><TD><INPUT type=text size=6 value=0 id=faketroop3></td></tr>\
		  <TR><TD align=right># of Swords: </td><TD><INPUT type=text size=6 value=0 id=faketroop4></td></tr>\
		  <TR><TD align=right># of Archers: </td><TD><INPUT type=text size=6 value=0 id=faketroop5></td></tr>\
		  <TR><TD align=right># of Calvary: </td><TD><INPUT type=text size=6 value=0 id=faketroop6></td></tr>\
		  <TR><TD align=right># of Heavy Cav: </td><TD><INPUT type=text size=6 value=0 id=faketroop7></td></tr>\
		  <TR><TD align=right># of Wagons: </td><TD><INPUT type=text size=6 value=0 id=faketroop8></td></tr>\
		  <TR><TD align=right># of Ballistas: </td><TD><INPUT type=text size=6 value=0 id=faketroop9></td></tr>\
		  <TR><TD align=right># of Battering Ram: </td><TD><INPUT type=text size=6 value=0 id=faketroop10></td></tr>\
		  <TR><TD align=right># of Catapults: </td><TD><INPUT type=text size=6 value=0 id=faketroop11></td></tr>\
		  <TR><TD align=right>Fake name to use: </td><TD><INPUT type=text size=13 value=oftheNOOBS id=fakeName></td></tr>\
		  <TR><TD align=right>Target city: </td><TD>'+citySelect+'</td></tr>\
        <TR><TD colspan=2 align=center><INPUT id=testSendMarch type=submit value="Fake Attack" \></td></tr></table>\
        <INPUT id=ptReloadKOC type=submit value="Reload KOC" \>\
        <BR><DIV id=testDiv style="background-color:#fffff0; maxwidth:675; max-height:430px; height:430px; overflow-y:auto;"></div>';
    t.cont.innerHTML = m;
    document.getElementById('testSendMarch').addEventListener ('click', t.clickFakeAttack, false);
    document.getElementById('ptReloadKOC').addEventListener ('click', t.reloadKOC, false);
    function xyNotify(city, x, y){
      var m = '[ Notified: '+ (city?city.name:'null') +', x='+ x +', y='+ y +' ]';
      document.getElementById('testNotify').innerHTML = m;
    }
  },

  hide : function (){
  },

  show : function (){
  },

  reloadKOC : function (){
    var goto = 'http://apps.facebook.com/kingdomsofcamelot/?s='+GetServerId();
    var t = '<FORM target="_top" action="'+ goto +'" method=post><INPUT id=xxptButReload type=submit value=RELOAD><INPUT type=hidden name=s value="'+ GetServerId() +'"</form>';
    var e = document.createElement ('div');
    e.innerHTML = t;
    document.body.appendChild (e);
    setTimeout (function (){document.getElementById('xxptButReload').click();}, 0);
  },

  writeDiv : function (msg){
    var t = Tabs.Test;
    if (t.state != null)
    document.getElementById('testDiv').innerHTML = msg;
  },

  addDiv : function (msg){
    var t = Tabs.Test;
    if (t.state != null)
    document.getElementById('testDiv').innerHTML += msg;
  },

  createFakeAttack : function (cityNum, isScout, isWild, isFalse, secs, troops, name){
    var marchId = 'm'+ (88888 + Math.floor(Math.random()*11111));
    var march = {};
    if (matTypeof(Seed.queue_atkinc)=='array')
      Seed.queue_atkinc = {};
    if (isFalse)
      march.marchType = 0;
    else if (isScout)
      march.marchType = 3;
    else
      march.marchType = 4;

    march.toCityId = Cities.cities[cityNum].id;
    if (isWild) {
      keys = uW.Object.keys(Seed.wilderness['city'+Cities.cities[cityNum].id]);
      march.toTileId = Seed.wilderness['city'+Cities.cities[cityNum].id][keys[0]].tileId;
    } else {
      march.toTileId = Cities.cities[cityNum].tileId;
    }
    secs = parseInt(secs);
    march.arrivalTime = unixTime() + secs;
    march.departureTime = unixTime() - 10;
     march.unts = {}
	for(i=0; i<12; i++){
	  if(troops[i] > 0)
		march.unts["u"+(i+1)] = addCommas(troops[i]);
	}
    march.pid = 1234567;
    march.score = 9;
    march.mid = marchId.substr(1);
    march.players = {}
    march.players.u1234567 = {}
    march.players.u1234567.n = name;
    march.players.u1234567.t = 60;
    march.players.u1234567.m = 5441192;
    march.players.u1234567.s = 'M';
    march.players.u1234567.w = 1;
    march.players.u1234567.a = 1;
    march.players.u1234567.i = 5;
    Seed.queue_atkinc[marchId] = march;
    Seed.players.u1234567 = march.players.u1234567;
  },

  clickFakeAttack : function (){
    var t = Tabs.Test;
    var isScout = document.getElementById('fakeIsScout').checked;
    var isWild = document.getElementById('fakeIsWild').checked;
    var isFalse = document.getElementById('fakeFalse').checked;
	var troops = [];
	for(i=0; i<12; i++)
		troops[i] = parseInt(document.getElementById('faketroop'+i).value);
    var secs = parseInt(document.getElementById('fakeSeconds').value);
	var name = document.getElementById('fakeName').value;
	var city = document.getElementById('fakeCity').value;
    t.createFakeAttack (city, isScout, isWild, isFalse, secs, troops ,name);
  },
}

/*********************************** Info tab ***********************************/
Tabs.Info = {
  tabOrder : 20,
  tabLabel : document.getElementById('mod_views_map').innerHTML,
  cont : null,

  init : function (div){
    var t = Tabs.Info;
    t.cont = div;
    fortmight = {
      u53: "4",
      u55: "7",
      u60: "1",
      u61: "2",
      u62: "3",
    };
    var t = Tabs.Info;
    
    var m = '<DIV style="max-height:735px; height:735px;"><DIV class=ptstat>PROVINCE MAP</div><DIV id=ptProvMap style="height:'+ provMapCoords.imgHeight +'px; width:'+ provMapCoords.imgWidth +'px; background-repeat:no-repeat; background-image:url(\''+ URL_PROVINCE_MAP +'\')"></div>';
    m+= '<BR><DIV class=ptstat>DISTANCE CALCULATOR</div><DIV class=ptentry><TABLE align=center cellpadding=1 cellspacing=0>\
      <TR><TD class=xtab align=left><INPUT id=plot type=checkbox>Plot coords on map.</td></tr>\
      <TR><TD class=xtab align=left><B>First Location: </b></td><TD  class=xtab> X: <INPUT id=calcX type=text\> Y: <INPUT id=calcY type=text\> Or, choose city: <SPAN id=ptloc1></span></td></tr>\
      <TR><TD class=xtab align=left><B>Second Location: </b></td><TD class=xtab> X: <INPUT id=calcX2 type=text\> Y: <INPUT id=calcY2 type=text\> Or, choose city: <SPAN id=ptloc2></span></td></tr></table>\
      <CENTER><DIV style="width:60%; font-size:14px; border: 1px solid; background-color:white; margin:20px 3px 3px 0px; padding:4px" id=ptdistout></div></div>\
      <BR></center></div>';
    t.cont.innerHTML = m +'</div>';
    
    for (var c=0; c<Cities.numCities; c++)      
      t.makeCityImg (c, document.getElementById('ptProvMap'));
	new CdispCityPicker ('ptloc1', document.getElementById('ptloc1'), true, t.eventLocChanged, 0).bindToXYboxes(document.getElementById('calcX'), document.getElementById('calcY'));
    new CdispCityPicker ('ptloc2', document.getElementById('ptloc2'), true, t.eventLocChanged, 0).bindToXYboxes(document.getElementById('calcX2'), document.getElementById('calcY2'));
    t.eventLocChanged(Cities.cities[0], Cities.cities[0].x, Cities.cities[0].y);
    document.getElementById('plot').addEventListener('change', function(){
       t.plotCityImg(0, document.getElementById('ptProvMap'), document.getElementById('calcX').value, document.getElementById('calcY').value);
	     t.plotCityImg(1, document.getElementById('ptProvMap'), document.getElementById('calcX2').value, document.getElementById('calcY2').value);
    }, false);
  },

  hide : function (){
  },

  show : function (){
  },

// var provMapCoords = {imgWidth:680, imgHeight:654, mapWidth:595, mapHeight:595, leftMargin:44, topMargin:39};  
  makeCityImg : function (cityNum, eMap){
//logit ('makeCityImg: '+ cityNum);    
    var t = Tabs.Info;
    var city = Cities.cities[cityNum];
//    var off = getAbsoluteOffsets (eMap);
    var x = parseInt((provMapCoords.mapWidth * city.x) / 750);
    var y = parseInt((provMapCoords.mapHeight * city.y) / 750);
    var ce = document.createElement ('div');
    ce.style.background = 'black';
    ce.style.opacity = '1.0';
    ce.style.position='relative';
    ce.style.display='block';
    ce.style.width='14px';
    ce.style.height='16px';
    ce.style.border='1px solid #fff';
    ce.style.color = 'white';
    ce.style.textAlign = 'center';
    ce.style.top = (y+provMapCoords.topMargin-(cityNum*16)-8) +'px';      
    ce.style.left = (x+provMapCoords.leftMargin-7) +'px';
    eMap.appendChild(ce);
    ce.innerHTML = (cityNum+1) +'';
  },
  
  plotCityImg : function (cityNum, eMap, x, y){
//logit ('makeCityImg: '+ cityNum);    
    var t = Tabs.Info;
    var xplot = parseInt((provMapCoords.mapWidth * x) / 750);
    var yplot = parseInt((provMapCoords.mapHeight * y) / 750);
	if(document.getElementById('plotmap_'+cityNum) == null){
		var ce = document.createElement ('div');
		ce.style.background = 'white';
		ce.id = 'plotmap_'+cityNum;
		ce.style.opacity = '1.0';
		ce.style.position='relative';
		ce.style.display='block';
		ce.style.width='14px';
		ce.style.height='16px';
		ce.style.border='1px solid #fff';
		ce.style.color = 'black';
		ce.style.textAlign = 'center';
	} else {
		ce = document.getElementById('plotmap_'+cityNum);
	}
    ce.style.top = (yplot+provMapCoords.topMargin-((Cities.numCities+cityNum)*16)-8) +'px';      
    ce.style.left = (xplot+provMapCoords.leftMargin-7) +'px';
    eMap.appendChild(ce);
    ce.innerHTML = (cityNum+1) +'';
  },
  
  eventLocChanged : function (city, x, y){
    var t = Tabs.Info;
    var x1 = parseInt(document.getElementById('calcX').value);
    var x2 = parseInt(document.getElementById('calcX2').value);
    if (isNaN(x2))
      return;
    var y1 = parseInt(document.getElementById('calcY').value);
    var y2 = parseInt(document.getElementById('calcY2').value);
    var m = 'The distance from '+ x1 +','+ y1 +' to '+ x2 +','+ y2 +' is: &nbsp;<B>'+ distance (x1, y1, x2, y2).toFixed(2) +'</b>';
    document.getElementById('ptdistout').innerHTML = m;
    if (document.getElementById('plot').checked){
	       t.plotCityImg(0, document.getElementById('ptProvMap'), x1, y1);
	       t.plotCityImg(1, document.getElementById('ptProvMap'), x2, y2);
	  }
  },
}


/*********************************** Options Tab ***********************************/

Tabs.Options = {
  tabOrder : 40,
  tabLabel : 'Options',
  cont : null,
  curTabBut : null,
  curTabName : null,
  fixAvailable : {},

  init : function (div){
    var t = Tabs.Options;
    t.cont = div;
    
    var main = '<TABLE class=ptTab align=center><TR><TD><INPUT class=pbSubtab ID=ptmrchSubU type=submit value="Options"></td>';    
	main +='<TD><INPUT class=pbSubtab ID=ptmrchSubV type=submit value="Layout"></td></tr></table><HR class=ptThin>';
    main += '<TD width = "100px" ; border:none"><a href="http://code.google.com/p/koc-power-tools/wiki/HowToOptions" target="_blank">HELP</a></td></tr>';
    main +='<DIV id=ptOptOutput style="margin-top:10px; background-color:white; height:680px; overflow:auto;"></div>';
	
    t.cont.innerHTML = main;
    t.Overv = document.getElementById('ptOptOutput');
    
    document.getElementById('ptmrchSubU').addEventListener('click', e_butSubtab, false);
    document.getElementById('ptmrchSubV').addEventListener('click', e_butSubtab, false);

    
    changeSubtab (document.getElementById('ptmrchSub'+Options.curOptTab));
    
    function e_butSubtab (evt){            
      changeSubtab (evt.target);   
    }

    function changeSubtab (but){
      if (but == t.curTabBut)
        return;
      if (t.curTabBut){
        t.curTabBut.className='pbSubtab'; 
        t.curTabBut.disabled=false;
      }
      t.curTabBut = but;
      but.className='pbSubtab pbSubtabSel'; 
      but.disabled=true;
      t.curTabName = but.id.substr(9);
	  Options.curOptTab = t.curTabName;
      t.show ();
    }
    },
    
    Options : function (){ 
    var t = Tabs.Options; 
    try {      
      m = '<TABLE class=ptTab>';
	  m+='<TR><TD colspan=2><B>Config:</b></td></tr>';
	  m+='<TR><TD><INPUT id=ptAllowWinMove type=checkbox /></td><TD>Enable window drag (move window by dragging top bar with mouse)</td></tr>';
	  m+='<TR><TD><INPUT id=ptHideOnGoto type=checkbox /></td><TD>Hide window when clicking on map coordinates.</td></tr>';
	  m+='<TR><TD><INPUT id=ptEnableFoodWarn type=checkbox /></td><TD>Show \'food left\' in RED if food will run out in less than';
	  m+='<INPUT id=optFoodHours type=text size=3 value="'+ Options.foodWarnHours +'"> hours, does NOT affect the food alert anymore!</td></tr>';
	  m+='<TR><TD><INPUT id=ptEnableFoodTower type=checkbox /></td><TD>Enable Tower food alert. (Warning set to 6 hours, checked every 30min.)</td></tr>';
	  m+='<TR><TD><INPUT id=ptEnableWisperAlert type=checkbox /></td><TD>Enable sound alert on whisper</td></tr>';
	  m+='<TR><TD><INPUT id=ptEnableTowerAlert type=checkbox /></td><TD>Enable sound alert on tower alert in chat</td></tr>';
      m+='<TR><TD><INPUT id=ptupdate type=checkbox '+ (GlobalOptions.ptupdate?'CHECKED ':'') +'/></td><TD>Check updates on '+ htmlSelector({0:'Userscripts', 1:'Google Code'},GlobalOptions.ptupdatebeta,'id=ptupdatebeta') +' (all domains) &nbsp; &nbsp; <INPUT id=ptupdatenow type=submit value="Update Now" /></td></tr>';
	  m+='<TR><TD colspan=2><B>KofC Features:</b></td></tr>';
	  m+='<TR><TD><INPUT id=togAllRpts type=checkbox /></td><TD>Enable enhanced Alliance Reports.</td></tr>';
	  m+='<TR><TD><INPUT id=togAllowAlter type=checkbox /></td><TD>Allow other scripts to change format of Alliance Reports.</td></tr>';
	  m+='<TR><TD><INPUT id=togAllMembers type=checkbox /></td><TD>Enable enhanced alliance members view.</td></tr>';
	  m+='<TR><TD><INPUT id=togPageNav type=checkbox /></td><TD>Enhanced page navigation for messages and reports.</td></tr>';
	  m+='<TR><TD><INPUT id=togGmtClock type=checkbox /></td><TD>Enable GMT clock next to "Camelot Time" </td></tr>';
	  m+='<TR><TD><INPUT id=togAttackPicker type=checkbox /></td><TD>Enable target city picker in attack dialog (reinforce, reassign and transport)</td></tr>';
	  m+='<TR><TD><INPUT id=togBatRounds type=checkbox /></td><TD>Display # of rounds in battle reports</td></tr>';
	  m+='<TR><TD><INPUT id=togAtkDelete type=checkbox /></td><TD>Enable delete button when displaying battle report</td></tr>';
	  m+='<TR><TD><INPUT id=togRptGift type=checkbox /></td><TD>Enable delete gifts report button in inbox</td></tr>';
	  m+='<TR><TD colspan=2><BR><BR><B>KofC Bug Fixes:</b></td></tr>';
	  m+='<TR><TD><INPUT id=togTowerFix type=checkbox /></td><TD>Fix tower report to show exact target (city, wild or invalid)</td></tr>';
	  m+='<TR><TD><INPUT id=togKnightSelect type=checkbox /></td><TD>Do not automatically select a knight when changing march type to scout, transport or reassign</td></tr>';
	  m+='<TR><TD><INPUT id=togCoordBox type=checkbox /></td><TD>Keep map coordinate box/bookmarks on top of troop activity</td></tr>';
	  m+='<TR><TD><INPUT id=togMapInfo type=checkbox /></td><TD>Fix reassign button on maptile info</td></tr>';
	  m+='<TR><TD><INPUT id=togMapInfo2 type=checkbox /></td><TD>Add reassign button when clicked on own city</td></tr>';
	  m+='<TR><TD colspan=2><B>Auto Training:</b></td></tr>';
	  m+='<TR><TD></TD><TD><INPUT id=optAutoTrainMins type=text size=1 value="'+ parseInt(AutoTrainOptions.intervalSecs/60) +'"> minutes between auto-training.</td></tr>';
	  m+='</table><BR><BR><HR>Note that if a checkbox is greyed out there has probably been a change of KofC\'s code, rendering the option inoperable.';
      t.Overv.innerHTML = m;
      
      t.togOpt ('ptEnableFoodWarn', 'enableFoodWarn');
      t.togOpt ('ptEnableFoodTower', 'enableFoodTower');
      t.togOpt ('ptEnableWisperAlert', 'enableWhisperAlert');
      t.togOpt ('ptEnableTowerAlert', 'enableTowerAlert');
      
      t.togOpt ('ptHideOnGoto', 'hideOnGoto');
      t.togOpt ('ptAllowWinMove', 'ptWinDrag', mainPop.setEnableDrag);
      t.togOpt ('togAllowAlter', 'allowAlterAR');
      t.togOpt ('togAllRpts', 'enhanceARpts', AllianceReports.enable);
      t.togOpt ('togAllMembers', 'enhanceViewMembers', AllianceReports.enable_viewmembers);
      t.togOpt ('togTowerFix', 'fixTower', TowerAlerts.enableFixTarget, TowerAlerts.isFixTargetAvailable);
      t.togOpt ('togPageNav', 'fixPageNav', PageNavigator.enable, PageNavigator.isAvailable);
      t.togOpt ('togGmtClock', 'gmtClock', GMTclock.setEnable);
      t.togOpt ('togKnightSelect', 'fixKnightSelect', AttackDialog.setEnable, AttackDialog.isKnightSelectAvailable);
      t.togOpt ('togAttackPicker', 'attackCityPicker', AttackDialog.setEnable, AttackDialog.isCityPickerAvailable);
      t.togOpt ('togRptGift', 'enhancedinbox', DispReport.setEnable, DispReport.isDispReportAvailable);
      t.togOpt ('togCoordBox', 'mapCoordsTop', CoordBox.setEnable, CoordBox.isAvailable);
      t.togOpt ('togMapInfo', 'mapInfo', mapinfoFix.setEnable, mapinfoFix.isAvailable);
      t.togOpt ('togMapInfo2', 'mapInfo2', mapinfoFix.setEnable2, mapinfoFix.isAvailable2);
      t.togOpt ('togBatRounds', 'dispBattleRounds', null, battleReports.isRoundsAvailable);
      t.togOpt ('togAtkDelete', 'reportDeleteButton', null, battleReports.isRoundsAvailable);
      document.getElementById('ptupdate').addEventListener ('change', t.e_updateChanged, false);
	  
	  document.getElementById('ptupdatebeta').addEventListener ('change', function(){
      		GlobalOptions.ptupdatebeta = document.getElementById('ptupdatebeta').value;
			GM_setValue ('Options_??', JSON2.stringify(GlobalOptions));
      },false);	
	  document.getElementById('ptupdatenow').addEventListener ('click', function(){
			AutoUpdater_103659.call(true,true);
      },false);	
                  
      document.getElementById('optFoodHours').addEventListener ('change', function () {
          var x = document.getElementById('optFoodHours').value; 
          if (isNaN(x) || x<0.01 || x>99999){
            document.getElementById('optFoodHours').value = Options.foodWarnHours;
            return;
          }
          Options.foodWarnHours = x; 
          saveOptions();
        }, false);
      
	document.getElementById('optAutoTrainMins').addEventListener ('change', function () {
				AutoTrainOptions.intervalSecs = 60 * document.getElementById('optAutoTrainMins').value;
				saveAutoTrainOptions();
			}, false);

	} catch (e) {
      t.Overv.innerHTML = '<PRE>'+ e.name +' : '+ e.message +'</pre>';  
    }
  },
  
  Layout :function (){
    var t = Tabs.Options;  
    try {      
      m= '<TABLE class=ptTab>';
	  m+='<TR><TD colspan=2><U><B>Chat Layout:</b></u></td></tr>';
	  m+='<TR><TD><INPUT id=togChatStuff type=checkbox /></td><TD>Enable Chat Enable Chat enhancements (clickable coords, click on icon to whisper, colors).</td></tr>';
      m+='<TR><TD><INPUT id=togChatGlobal type=checkbox /></td><TD>Enable Global chat background color.</td></tr>';
      m+='<TR><TD><INPUT id=togChatAlliance type=checkbox /></td><TD>Enable Alliance chat background color.</td></tr>';
	  m+='<TR><TD><INPUT id=togChatWhisper type=checkbox /></td><TD>Enable Whisper in Color Font.</td></tr>';
	  m+='<TR><TD><INPUT id=togChatBold type=checkbox /></td><TD>Enable Chat in Bold Font.</td></tr>';
	  m+='<TR><TD><INPUT id=togChatAttack type=checkbox /></td><TD>Enable background color on tower alert.</td></tr>';
	  m+='<TR><TD><INPUT id=togChatLead type=checkbox /></td><TD>Enable background for alliance Leaders.<SPAN class=boldRed>&nbsp;(NEW)</span></td></tr></table>';

	  m+='<TABLE class=ptTab><BR><TR><TD colspan=2><U><B>Colors: &nbsp;(Refresh for effect)</b></u></td></tr>';
      m+='<TR><TD>Chat Color - Global: </td><TD><INPUT id=togGlobal type=text size=7 maxlength=7 value="'+Colors.ChatGlobal+'"></td>&nbsp;<TD style="background-color:'+Colors.ChatGlobal+'" width=30px>&nbsp;</td></tr>';
	  m+='<TR><TD>Chat Color - Alliance: </td><TD><INPUT id=togAll type=text size=7 maxlength=7 value="'+Colors.ChatAll+'"></td>&nbsp;<TD style="background-color:'+Colors.ChatAll+'" width=30px>&nbsp;</td></tr>';
      m+='<TR><TD>Chat Color - Tower Alert: </td><TD><INPUT id=togChatAtt type=text size=7 maxlength=7 value="'+Colors.ChatAtt+'"></td>&nbsp;<TD style="background-color:'+Colors.ChatAtt+'" width=30px>&nbsp;</td></tr>';
      m+='<TR><TD>Chat Color - Whisper Alert: </td><TD><INPUT id=togWhisper type=text size=7 maxlength=7 value="'+Colors.ChatWhisper+'"></td>&nbsp;<TD style="background-color:'+Colors.ChatWhisper+'" width=30px>&nbsp;</td></tr>';
      m+='<TR><TD>Chat Color - Chancy: </td><TD><INPUT id=togChatC type=text size=7 maxlength=7 value="'+Colors.ChatChancy+'"></td>&nbsp;<TD style="background-color:'+Colors.ChatChancy+'" width=30px>&nbsp;</td></tr>';
      m+='<TR><TD>Chat Color - Vice-C: </td><TD><INPUT id=togChatVC type=text size=7 maxlength=7 value="'+Colors.ChatVC+'"></td>&nbsp;<TD style="background-color:'+Colors.ChatVC+'" width=30px>&nbsp;</td></tr>';
      m+='<TR><TD>Chat Color - Officers: </td><TD><INPUT id=togChatLeaders type=text size=7 maxlength=7 value="'+Colors.ChatLeaders+'"></td>&nbsp;<TD style="background-color:'+Colors.ChatLeaders+'" width=30px>&nbsp;</td></tr>';
	  
	  
      m+='<TR><TD>General - Dark Row: </td><TD><INPUT id=togDarkRow type=text size=7 maxlength=7 value="'+Colors.DarkRow+'"></td>&nbsp;<TD style="background-color:'+Colors.DarkRow+'" width=30px>&nbsp;</td></tr>';
      m+='<TR><TD>General - Button Selected: </td><TD><INPUT id=togButClick type=text size=7 maxlength=7 value="'+Colors.ButtonSelected+'"></td>&nbsp;<TD style="background-color:'+Colors.ButtonSelected+'" width=30px>&nbsp;</td></tr>';
     
      m+='<TR><TD>Overview - Dark Rows:</td><TD><INPUT id=togOverDarkRow type=text size=7 maxlength=7 value="'+Colors.OverviewDarkRow+'"></td>&nbsp;<TD style="background-color:'+Colors.OverviewDarkRow+'" width=30px>&nbsp;</td></tr>';
	  m+='<TR><TD>Transparency:&nbsp;&nbsp;<span style="color:#800;"><sup>(0.7 - 2)</sup></span></td><TD><INPUT id=togOpacity type=text size=3 maxlength=3 value="'+Colors.Opacity+'"/></td><TD></tr>';
	  
      m+='</table><BR><BR><DIV>HTML colors:&nbsp;&nbsp;&nbsp;';
      m+='<a href="http://www.colorpicker.com/" target="_blank">Color Picker</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;';
      m+='<a href="http://www.w3schools.com/html/html_colors.asp" target="_blank">Colors</a>';
      m+='</table><BR><BR><HR>To apply colors you need to REFRESH!<BR>';
      m+= strButton20('Reset Colors', 'id=ResetALL');
      t.Overv.innerHTML = m;
            
      t.togOpt ('togChatStuff', 'chatEnhance', ChatStuff.setEnable, ChatStuff.isAvailable);
      t.togOpt ('togChatGlobal', 'chatglobal');
      t.togOpt ('togChatAlliance', 'chatalliance');
      t.togOpt ('togChatWhisper', 'chatwhisper');	
      t.togOpt ('togChatBold', 'chatbold');
      t.togOpt ('togChatAttack', 'chatAttack');
      t.togOpt ('togChatLead', 'chatLeaders');
      
      document.getElementById('togGlobal').addEventListener('change', function(){Colors.ChatGlobal = document.getElementById('togGlobal').value;t.Layout()}, false);
      document.getElementById('togChatLeaders').addEventListener('change', function(){Colors.ChatLeaders = document.getElementById('togChatLeaders').value;t.Layout()}, false);
      document.getElementById('togChatC').addEventListener('change', function(){Colors.ChatChancy = document.getElementById('togChatC').value;t.Layout()}, false);
      document.getElementById('togChatVC').addEventListener('change', function(){Colors.ChatVC = document.getElementById('togChatVC').value;t.Layout()}, false);
      document.getElementById('togDarkRow').addEventListener('change', function(){Colors.DarkRow = document.getElementById('togDarkRow').value;t.Layout()}, false);
      document.getElementById('togButClick').addEventListener('change', function(){Colors.ButtonSelected = document.getElementById('togButClick').value;t.Layout()}, false);
      document.getElementById('togOverDarkRow').addEventListener('change', function(){Colors.OverviewDarkRow = document.getElementById('togOverDarkRow').value;t.Layout()}, false);
      document.getElementById('togAll').addEventListener('change', function(){Colors.ChatAll = document.getElementById('togAll').value;t.Layout()}, false);
      document.getElementById('togChatAtt').addEventListener('change', function(){Colors.ChatAtt = document.getElementById('togChatAtt').value;t.Layout()}, false);
      document.getElementById('togWhisper').addEventListener('change', function(){Colors.ChatWhisper = document.getElementById('togWhisper').value;t.Layout()}, false);
      document.getElementById('togOpacity').addEventListener('change', function(){Colors.Opacity = document.getElementById('togOpacity').value;t.Layout()}, false);
      document.getElementById('ResetALL').addEventListener ('click', function(){
      		RemoveList = (GM_listValues());
      		for (i=0;i<RemoveList.length;i++){
      			if (RemoveList[i] == "Colors") GM_deleteValue(RemoveList[i]);
      		}
      		ResetColors=true;
      		reloadKOC();
      },false);	
      
    } catch (e) {
      t.cont.innerHTML = '<PRE>'+ e.name +' : '+ e.message +'</pre>';  
    }
  },
  

  
  hide : function (){
  },

  show : function (){
        var t = Tabs.Options;
    if (t.curTabName == 'U') 
         t.Options();
    else if (t.curTabName == 'V')
      t.Layout();
  },
  
  togOpt : function (checkboxId, optionName, callEnable, callIsAvailable){
    var t = Tabs.Options;
    var checkbox = document.getElementById(checkboxId);
    
    if (callIsAvailable && callIsAvailable()==false){
      checkbox.disabled = true;
      return;
    }
    if (Options[optionName])
      checkbox.checked = true;
    checkbox.addEventListener ('change', new eventToggle(checkboxId, optionName, callEnable).handler, false);
    function eventToggle (checkboxId, optionName, callOnChange){
      this.handler = handler;
      var optName = optionName;
      var callback = callOnChange;
      function handler(event){
        Options[optionName] = this.checked;
        saveOptions();
        if (callback != null)
          callback (this.checked);
      }
    }
  },
  
  e_updateChanged : function (){
    GlobalOptions.ptupdate = document.getElementById('ptupdate').checked;
    GM_setValue ('Options_??', JSON2.stringify(GlobalOptions));  
  },
  
}







/*******************   KOC Map interface ****************/
Map = {
/***
 0: bog
10: grassland
11: lake
20: woods
30: hills
40: mountain
50: plain
51: city / barb
53: misted city
***/
  generateBlockList : function(left, top, width) {
    var width5 = parseInt(width / 5);
    var bl = [];

    for (x=0; x<width5; x++){
      xx = left + (x*5);
      if (xx > 745)
        xx -= 750;
      for (y=0; y<width5; y++){
        yy = top + (y*5);
        if (yy > 745)
          yy -= 750;
        bl.push ('bl_'+ xx +'_bt_'+ yy);
      }
    }
    return bl.join(",");
  },

  callback : null,
  request : function (left, top, width, cb) {
if (DEBUG_TRACE) logit (" 1 Map.request(): "+ left +' , '+ top +' , '+ width);
    left = parseInt(left / 5) * 5;
    top = parseInt(top / 5) * 5;
    width = parseInt((width+4) / 5) * 5;
    var blockString = this.generateBlockList(left, top, width);
    Map.callback = cb;
    if (uW.SANDBOX)
      return RequestMAPTEST(left, top, width, callback);
    var params = uW.Object.clone(uW.g_ajaxparams);
    params.blocks = blockString;
    new MyAjaxRequest(uW.g_ajaxpath + "ajax/fetchMapTiles.php" + uW.g_ajaxsuffix, {
      method: "post",
      parameters: params,
      onSuccess: function (rslt) {
if (DEBUG_TRACE) logit (" 2 Map.request  Map = "+ inspect (Map, 2, 1, 2));
        Map.callback(left, top, width, rslt);
      },
      onFailure: function (rslt) {
        Map.callback(left, top, width, rslt);
      }
    });
  },
};


/*************************************** Train Tab ***********************************************/

Tabs.Train = {
  tabOrder : 15,
  tabLabel : uW.g_js_strings.commonstr.train,
  cont : null,
  timer : null,
  stats : {},
  selectedCity : {},
  cityNum :0,
  trainTimer : null,
  running : false,
  gamble : {"1":{"min":"5","max":"15","cost":"2"},"2":{"min":"10","max":"25","cost":"4"}},
  nextAuto:				null,
  defenseOptions:	"<option value='53'>Crossbow</option><option value='55'>Trebuchet</option><option value='60'>Trap</option><option value='61'>Caltrop</option><option value='62'>Spiked Barrier</option>",
  prevCityNo:			0,
  
  init : function (div){
    var t = Tabs.Train;
    t.cont = div;
    uW.cancelTrain = t.butcancelTrain;
    uW.cancelFort = t.butcancelFort;
    s = "<DIV style='max-height:740px; height:740px; max-width:745px; width:745px; overflow-y:auto'><DIV id=trainTopSelect >\
      <DIV class=ptstat id=trainheader>"+uW.g_js_strings.modal_openBarracks.trainttl+" & "+uW.g_js_strings.modal_openWalls.builddefenses+"</div>\
      <DIV style='height:5px'></div><DIV class=ptentry>\
      <DIV style='text-align:center; margin-bottom:5px;'>"+uW.g_js_strings.commonstr.city+": &nbsp; <span id=ptspeedcity></span></div>\
	  <TABLE class=ptTab width=100%><TR valign=top><TD width=50%>\
      <TABLE align=center><TR><TD align=right>"+uW.g_js_strings.modal_messages_viewdesertionreports.trooptypes+": </td><TD colspan=2>\
      <SELECT id=ptttType>";
     for (i=1;i<=13;i++){
      	  s+='<option value='+i+'>'+uW.unitcost['unt'+i][0]+'</option>';
      }
      s+="</select> &nbsp; ("+uW.g_js_strings.commonstr.max+" <span id=ptttSpMax></span>)</td></tr>\
      <TR><TD align=right>"+uW.g_js_strings.modal_barracks_train.numtotrain+": </td><TD><INPUT id='ptttInpPS' size=5 type='text' value='0'\></td>\
        <TD><INPUT id='ptttButMaxPS' type=submit value='"+uW.g_js_strings.commonstr.max+"'\> &nbsp; (\
        "+uW.g_js_strings.commonstr.max+" <span id=ptttSpMaxPS>0</span>)</td></tr>\
      <TR><TD align=right>"+uW.buildingcost.bdg13[0]+": </td><TD><INPUT id='ptttInpSlots' size=2 type='text' value='1'\></td>\
        <TD width=75%><INPUT id='ptttButMaxSlots' type=submit value='"+uW.g_js_strings.commonstr.max+"'\> &nbsp;\
        ("+uW.g_js_strings.commonstr.max+" <span id=ptttSpMaxSlots>1</span>)</td></tr>\
      <TR><TD align=right valign=top></td><TD colspan=2><INPUT type=CHECKBOX id=chkPop"+ (Options.maxIdlePop?' CHECKED ':'') +"> \
        <SPAN style='white-space:normal;'>"+uW.g_js_strings.commonstr.use +" "+ uW.g_js_strings.commonstr.workers+"</span>\
		<br><SELECT id=tutelage>\
		<option value='0'><CENTER>--- "+uW.g_js_strings.commonstr.items+" "+uW.g_js_strings.commonstr.speedup+" ---</center></option>\
		<option value='36'>"+ uW.itemlist.i36.name+"</option>\
        <option value='37'>"+ uW.itemlist.i37.name+"</option>\
        <option value='38'>"+ uW.itemlist.i38.name+"</option>\
		</select>\
		<br><br><SELECT id=pttrgamble>\
		<option value='0'><CENTER>--- "+uW.g_js_strings.commonstr.resources+" "+uW.g_js_strings.commonstr.speedup+" ---</center></option>\
		<option value=1>Use "+ t.gamble[1].cost+"x resources ("+ t.gamble[1].min+" - "+t.gamble[1].max+"%)</option>\
		<option value=2>Use "+ t.gamble[2].cost+"x resources ("+ t.gamble[2].min+" - "+t.gamble[2].max+"%)</option>\
		</select>\
		</td></tr>\
		<TR><TD colspan=3 align=center><DIV id=pbTroopTimeEst></div></td></tr>\
      <TR><TD colspan=3 align=center><DIV style='height:10px'></div><INPUT id='ptttButDo' type=submit value='"+uW.g_js_strings.modal_openBarracks.trainttl+"'\
      ></td></tr>\
      </table></td><TD width=20></td><TD style='border-left:solid 2px;' width=50% align=center>\
      <TABLE align=center><TR><TD align=right>"+uW.g_js_strings.modal_openWalls.builddefenses+": </td><TD colspan=2>\
      <SELECT id=pttdType>\
        <option value='53'>"+uW.fortcost.frt53[0]+"</option>\
        <option value='55'>"+uW.fortcost.frt55[0]+"</option>\
        <option value='60'>"+uW.fortcost.frt60[0]+"</option>\
        <option value='61'>"+uW.fortcost.frt61[0]+"</option>\
        <option value='62'>"+uW.fortcost.frt62[0]+"</option>\
      </select> &nbsp; (<span id=pttdSpMax></span>)</td>\
      <TR><TD align=right>"+uW.g_js_strings.modal_walls_train.numdefbuild+": </td><TD><INPUT id='pttdInpPS' size=5 type='text' value='0'\></td>\
        <TD><INPUT id='pttdButMaxPS' type=submit value='"+uW.g_js_strings.commonstr.max+"'\> &nbsp; ("+uW.g_js_strings.commonstr.max+"\
         <span id=pttdSpMaxPS>0</span>)</td></tr>\
      <TR><TD align=right>"+uW.g_js_strings.commonstr.space+"("+uW.buildingcost.bdg19[0]+"): </td>\
      <TD><INPUT id='pttdInpSlots' size=2 type='text' value='1'\></td>\
        <TD width=75%><INPUT id='pttdButMaxSlots' type=submit value='"+uW.g_js_strings.commonstr.max+"'\>&nbsp; (\
        "+uW.g_js_strings.commonstr.max+" <span id=pttdSpMaxSlots>1</span>)</td></tr>\
      <TR align=center><TD colspan=3><SPAN id=pttdSpace></span></td></tr>\
	 <TR><TD align=center colspan=3><INPUT type=CHECKBOX id=chkDoTraps"+ (AutoTrainOptions.doTraps[1]?' CHECKED ':'') +">Max Traps (Min=1 Max=5)</TD></TR>\
   	 <TR><TD align=center colspan=3><INPUT type=CHECKBOX id=chkDoCaltrops"+ (AutoTrainOptions.doCalrops[1]?' CHECKED ':'') +">Max Caltraps (Min=1 Max=5)</TD></TR>\
	 <TR><TD align=center colspan=3><INPUT type=CHECKBOX id=chkDoSpikes"+ (AutoTrainOptions.doSpikes[1]?' CHECKED ':'') +">Max Spikes (Min=1 Max=5)</TD></TR>\
   	 <TR><TD align=center colspan=3><INPUT type=CHECKBOX id=chkDoXbows"+ (AutoTrainOptions.doXbows[1]?' CHECKED ':'') +">Max Xbows (Min=1 Max=5)</TD></TR>\
      <TR><TD colspan=3 align=center><DIV style='height:10px'>\
      <SELECT id=siege>\
      <option value='0'><CENTER>--- "+uW.g_js_strings.commonstr.speedup+" ---</center></option>\
      <option value='26'>"+ uW.itemlist.i26.name+"</option>\
      </select></div>\
      <BR><INPUT id='pttdButDo' type=submit value='"+uW.g_js_strings.modal_openWalls.builddefenses+"'\></td></tr></table>\
      </td></tr></table></div></div>\
      <TABLE align=center width=425 class=ptTab><TR><TD><div id=ptTrainStatus style='overflow-y:auto; max-height:78px; height: 78px;'></div></td></tr></table>\
      <div style='height: 330px; background: #e8ffe8'>\
      <TABLE width=100% class=ptTab><TR><TD colspan=3><DIV id=divSTtop></div></td></tr>\
      <TR><TD width=50% style='padding-left:15px; padding-right:15px'><DIV style='text-align:center'>\
      <B>"+uW.g_js_strings.commonstr.troops+" ("+uW.g_js_strings.modal_openBarracks.trainingttl+")\
        &nbsp; (<SPAN id=statTTtot></span>)</b><BR><HR></div><DIV id=divSTleft style='overflow-y: auto; height:210px; max-height:210px'></div></td>\
        <TD width=50% style='padding-left:15px; padding-right:15px'><DIV style='text-align:center'><B>"+uW.g_js_strings.modal_openWalls.defqueue+"&nbsp; (<SPAN\ id=statDTtot></span>)</b><BR><HR></div><DIV id=divSTright style='overflow-y: auto; height:210px; max-height:210px'></div></td></tr>\
      </div></div>";
    t.cont.innerHTML = s;
    document.getElementById('ptttInpPS').addEventListener('keyup',function(){
        if (document.getElementById('ptttInpPS').value != ""){
            t.dispTroopTrainTimes();
        }else{
            document.getElementById('ptttInpPS').value = "0"
            t.dispTroopTrainTimes();
        }
    });
    document.getElementById('ptttType').addEventListener('change',function(){
        if (document.getElementById('ptttInpPS').value > 0){
            t.dispTroopTrainTimes()
        }
    });
    var dcp = new CdispCityPicker ('ptspeed', document.getElementById('ptspeedcity'), true, t.clickCitySelect, 0);
    t.TTspMax = document.getElementById ('ptttSpMax');
    t.TTspMaxPS = document.getElementById ('ptttSpMaxPS');
    t.TTspMaxSlots = document.getElementById ('ptttSpMaxSlots');
    t.TTbutMaxSlots = document.getElementById ('ptttButMaxSlots');
    t.TTbutMaxPerSlot = document.getElementById ('ptttButMaxPS');
    t.TTinpPerSlot = document.getElementById ('ptttInpPS');
    t.TTinpSlots = document.getElementById ('ptttInpSlots');
    t.TTselType = document.getElementById ('ptttType');
    t.TTbutDo = document.getElementById ('ptttButDo');
    t.TDspMax = document.getElementById ('pttdSpMax');
    t.TDspMaxPS = document.getElementById ('pttdSpMaxPS');
    t.TDspMaxSlots = document.getElementById ('pttdSpMaxSlots');
    t.TDbutMaxSlots = document.getElementById ('pttdButMaxSlots');
    t.TDbutMaxPerSlot = document.getElementById ('pttdButMaxPS');
    t.TDinpPerSlot = document.getElementById ('pttdInpPS');
    t.TDinpSlots = document.getElementById ('pttdInpSlots');
    t.TDselType = document.getElementById ('pttdType');
    t.TDbutDo = document.getElementById ('pttdButDo');
    t.TDspSpace = document.getElementById ('pttdSpace');
    t.divTrainStatus = document.getElementById ('ptTrainStatus');
          
    t.TTinpSlots.addEventListener ('change', t.updateTopTroops, false);
    t.TTbutMaxPerSlot.addEventListener ('click', t.clickTroopMaxPS, false);
    t.TTbutMaxSlots.addEventListener ('click', t.clickTroopMaxSlots, false);
    t.TTselType.addEventListener ('change', t.changeTroopSelect, false);
    t.TTbutDo.addEventListener ('click', t.clickTroopDo, false);
    t.TDinpSlots.addEventListener ('change', t.updateTopDef, false);
    t.TDselType.addEventListener ('change', t.changeDefSelect, false);
    t.TDbutMaxPerSlot.addEventListener ('click', t.clickDefMaxPS, false);
    t.TDbutMaxSlots.addEventListener ('click', t.clickDefMaxSlots, false);
    t.TDbutDo.addEventListener ('click', t.clickDefDo, false);
	document.getElementById ('chkPop').addEventListener ('change', t.clickCheckIdlePop, false);
    document.getElementById ('chkDoTraps').addEventListener ('change', t.clickCheckDoTraps, false);
    document.getElementById ('chkDoCaltrops').addEventListener ('change', t.clickCheckDoCaltrops, false);
    document.getElementById ('chkDoSpikes').addEventListener ('change', t.clickCheckDoSpikes, false);
    document.getElementById ('chkDoXbows').addEventListener ('change', t.clickCheckDoXbows, false);
    document.getElementById ('pttrgamble').addEventListener ('change', t.changeTroopSelect, false);
    
    document.getElementById ('chkPop').addEventListener ('change', t.clickCheckIdlePop, false);
    t.changeTroopSelect();
    t.changeDefSelect();
     t.doAutoTrain(1);
  },
  dispTroopTrainTimes:function(){
  		var t = Tabs.Train;
  		var TroopTypeID = parseInt(document.getElementById('ptttType').value);
  		var NumOfTroops = parseInt(document.getElementById('ptttInpPS').value); 
  		var TroopTime = unsafeWindow.modal_barracks_traintime(TroopTypeID,NumOfTroops);
  		var TroopName = unsafeWindow.unitcost['unt'+ TroopTypeID][0];
  		var TotalTime2x5 = TroopTime * 0.95;
  		var TotalTime2x15 = TroopTime * 0.85;
  		var TotalTime4x10 = TroopTime * 0.9;
  		var TotalTime4x25 = TroopTime * 0.75;
  		var TotalTimeLancelot = TroopTime * 0.7;
  		var TotalTimeArthur = TroopTime * 0.5;
  		var TotalTimeMerlin = TroopTime * 0.3;
  		var TotalTTS = unsafeWindow.cm.ThroneController.effectBonus(77);
  		var baseTime = t.calcBaseTrainTime(TroopTypeID,NumOfTroops);

  		message =  '<TABLE align=center><TR>';
  		message += '<TR><TD><B>Base Time NO TR: '+ timestr(baseTime,true) +' </b></td></tr>';
  		message += '<TR><TD>Time with ' + TotalTTS + '% Throne Boost : </td><TD>' + timestr(TroopTime,true) + '</td></tr>';
  		message += '<TR><TD>Time with Lacelot\'s : </td><TD>'+timestr(TotalTimeLancelot,true)+' </td></tr>';
  		message += '<TR><TD>Time with Arthur\'s : </td><TD>'+timestr(TotalTimeArthur,true)+' </td></tr>';
  		message += '<TR><TD>Time with Merlin\'s : </td><TD>'+timestr(TotalTimeMerlin,true)+'</td></tr>';
  		message += '<TR><TD>Time with 2x Reso : </td><TD>'+ timestr(TotalTime2x15,true) + ' - ' + timestr(TotalTime2x5,true) + ' </td></tr>'; 
  		message += '<TR><TD>Time with 4x Reso : </td><TD>'+ timestr(TotalTime4x25,true) + ' - ' + timestr(TotalTime4x10,true) + ' </td></tr></table>';
  		
  		document.getElementById('pbTroopTimeEst').innerHTML = message;
  },
 calcBaseTrainTime:function(d, f) {
 	var uw = unsafeWindow
    var c = +(uw.unitcost["unt" + d][7]) * f,
        e, k = {}, h = uw.seed.buildings["city" + uw.currentcityid],
        j = {}, l = uw.seed.knights["city" + uw.currentcityid],
        a, g = uw.seed.leaders["city" + uw.currentcityid];
    k.barracks = 0;
    k.workshop = 0;
    k.stable = 0;
    k.tech = 0;
    k.knight = 0;
    k.ultimate = 0;
    unsafeWindow.jQuery.each(h, function (n, m) {
        m.id = +(m[0]);
        m.level = +(m[1]);
        if (m.id === 13 && m.level > 0) {
            k.barracks += (m.level + 9)
        }
        if (m.id === 16 && m.level > 0) {
            if (+(d) >= 9) {
                k.workshop = m.level
            }
        }
        if (m.id === 17 && m.level > k.stable) {
            if (+(d) >= 7) {
                k.stable = m.level
            }
        }
    });
    e = k.barracks / 10;
    c = Math.max(1, Math.ceil(c / e));
    e = 1;
    if (l) {
        a = l["knt" + g.combatKnightId];
        if (a) {
            k.knight = (+(a.combatBoostExpireUnixtime) - uw.unixtime() > 0) ? (a.combat * 1.25) : a.combat
        } else {
            k.knight = 0
        }
    }
    if (uw.seed.tech) {
        k.tech = uw.seed.tech.tch5
    }
    k.ultimate = k.workshop + k.stable + k.tech;
    e = e * (1 + (0.1 * k.ultimate) + (0.005 * k.knight));
    if (uw.cm.WorldSettings.isOn("GUARDIAN_MARCH_EFFECT")) {
        var b = uw.cm.guardianModalModel.getStoneTrainingSpeedBonus();
        e = e * (1 + b)
    }
    c = Math.max(1, Math.ceil(c / e));
    return c
},
  calcTRBoosts : function (StatID){
		var equipped = Seed.throne.slotEquip[1];
		var total = 0;
		for(var k = 0; k<equipped.length; k++){
			var item_id = equipped[k];
			var item = unsafeWindow.kocThroneItems[item_id];
			for(var i = 1; i<=item.quality; i++){
				var id = item['effects']['slot'+i]['id'];
				if(id == StatID){
					var tier = parseInt(item["effects"]["slot"+i]["tier"]);
					var level = item["level"];
					var p = unsafeWindow.cm.thronestats.tiers[id][tier];
					var Percent = p.base + ((level * level + level) * p.growth * 0.5);
					total += Percent;
				}
			}
		}
		return total;
	},
  hide : function (){
    var t = Tabs.Train;
    clearTimeout (t.timer);
  },
  
  show : function (){
    var t = Tabs.Train;
    clearTimeout (t.timer);
    t.displayCityStats();
    t.changeTroopSelect();
    t.changeDefSelect();
    t.timer = setTimeout (t.show, 2000);
  },

/*******  TROOPS  ******/  
  
  updateTopTroops : function (){
    var t = Tabs.Train;
    var slots = parseInt(t.TTinpSlots.value, 10);
    if (isNaN(slots) || slots<0)
      slots = 0;
    t.TTspMax.innerHTML = t.stats.MaxTrain;
    t.TTspMaxSlots.innerHTML = t.stats.barracks - t.stats.queued;
    if (slots<1 || (t.stats.barracks-t.stats.queued < 1))
      t.TTspMaxPS.innerHTML = 0;
    else
      t.TTspMaxPS.innerHTML = parseInt(t.stats.MaxTrain / slots);
  },
      
  
  clickTroopMaxPS : function (){
    var t = Tabs.Train;
    var slots = parseInt(t.TTinpSlots.value, 10);
    if (slots<1 || (t.stats.barracks-t.stats.queued < 1))
      t.TTinpPerSlot.value = 0;
    else
      t.TTinpPerSlot.value = parseInt(t.stats.MaxTrain / slots);
    t.dispTroopTrainTimes();
  },

  clickTroopMaxSlots : function (){
    var t = Tabs.Train;
    t.TTinpSlots.value = t.stats.barracks - t.stats.queued;
  },
  
  clickCitySelect : function (city){
    var t = Tabs.Train;
    t.selectedCity = city;
    t.lastQueString = null;   
    t.lastDQueString = null;   
    t.displayCityStats ();
    t.changeTroopSelect();
    t.changeDefSelect();
    t.JumpCity(city.name);
  },
  
  JumpCity:function(city) {
     		var t = Tabs.AllianceList;
     		for (i=0;i<Seed.cities.length;i++) {
     			if (Seed.cities[i][1]==city) var cityNum=i;
     		}
     		cityNum++;
     		var obj = document.getElementById('citysel_'+cityNum);
  	   	return t.ClickWin(window,obj,'click');
     },
  
  ClickWin:function(win,obj,evtName) {
     	var evt = win.document.createEvent("MouseEvents");
     	evt.initMouseEvent(evtName, true, true, win,
     		0, 0, 0, 0, 0, false, false, false, false, 0, null);
     	return !obj.dispatchEvent(evt);
     },
  
  clickCheckIdlePop : function (){
    var t = Tabs.Train;
    if (document.getElementById ('chkPop').checked)
      Options.maxIdlePop = true;
    else
      Options.maxIdlePop = false;
    saveOptions ();
    t.displayCityStats ();
    t.changeTroopSelect ();
  },

    	clickCheckDoTraps: function (){
		var t = Tabs.Train;
		var cityNo = Cities.byID[t.selectedCity.id].idx + 1;
		AutoTrainOptions.doTraps[cityNo] = (document.getElementById ('chkDoTraps').checked)
		saveAutoTrainOptions ();
		t.displayCityStats ();
		t.changeDefSelect ();
	},
  	clickCheckDoCaltrops: function (){
		var t = Tabs.Train;
		var cityNo = Cities.byID[t.selectedCity.id].idx + 1;
		AutoTrainOptions.doCalrops[cityNo] = (document.getElementById ('chkDoCaltrops').checked)
		saveAutoTrainOptions ();
		t.displayCityStats ();
		t.changeDefSelect ();
	},
  	clickCheckDoSpikes: function (){
		var t = Tabs.Train;
		var cityNo = Cities.byID[t.selectedCity.id].idx + 1;
		AutoTrainOptions.doSpikes[cityNo] = (document.getElementById ('chkDoSpikes').checked)
		saveAutoTrainOptions ();
		t.displayCityStats ();
		t.changeDefSelect ();
	},
  	clickCheckDoXbows: function (){
		var t = Tabs.Train;
		var cityNo = Cities.byID[t.selectedCity.id].idx + 1;
		AutoTrainOptions.doXbows[cityNo] = (document.getElementById ('chkDoXbows').checked)
		saveAutoTrainOptions ();
		t.displayCityStats ();
		t.changeDefSelect ();
	},

  limitingFactor : null,
    
  changeTroopSelect : function (){
    var t = Tabs.Train;
    var cityId = t.selectedCity.id;
    // unitcost: NAME, Food, Wood, Stone, Ore, Gold, Pop, ?
    var id = t.TTselType.value;
    t.lastTroopSelect = id;
    t.limitingFactor = null;
    var uc = uW.unitcost['unt'+id];
	var actualuc = [];
	for(var r = 1; r<5; r++){
		if(document.getElementById('pttrgamble').value > 0)
			actualuc[r] = uc[r] * t.gamble[document.getElementById('pttrgamble').value].cost;
		else
			actualuc[r] = uc[r];
	}
    var max = 9999999999;
    if ( (t.stats.food / actualuc[1]) < max){
      max = t.stats.food / actualuc[1];
      t.limitingFactor = uW.resourceinfo['rec1'];
    }
    if ( (t.stats.wood / actualuc[2]) < max){
      max = t.stats.wood / actualuc[2];
      t.limitingFactor = uW.resourceinfo['rec2'];
    }
    if ( (t.stats.stone / actualuc[3]) < max){
      max = t.stats.stone / actualuc[3];
      t.limitingFactor = uW.resourceinfo['rec3'];
    }
    if ( (t.stats.ore / actualuc[4]) < max){
      max = t.stats.ore / actualuc[4];
      t.limitingFactor = uW.resourceinfo['rec4'];
    }
    if ( (t.stats.idlePop / uc[6]) < max){
      max = t.stats.idlePop / uc[6];
      t.limitingFactor = 'pop';
    }
    t.stats.MaxTrain = parseInt (max);
    if (t.stats.MaxTrain < 0)
      t.stats.MaxTrain = 0;
    if (matTypeof(uc[8]) == 'object'){
      for (k in uc[8]){  // check building requirement
		var isPrestige = getCityPrestige(cityId);
        var b = getCityBuilding (cityId, k.substr(1));
		if(isPrestige){
			var bid = parseInt(k.substr(1));
			//logit(bid);
			switch(bid){
				case 17: //Stable
					b.maxLevel = 12;
				case 16: //Workshop
					b.maxLevel = 12;
				case 15: //Blacksmith
					b.maxLevel = 12;
			}
		}
		//logit(isPrestige);
		logit(inspect(b,3,1));
        if (b.maxLevel < uc[8][k][1]){
          t.stats.MaxTrain = 0;
          t.limitingFactor = null;
          break;
        }
      }
    }
    if (matTypeof(uc[9]) == 'object'){
      for (k in uc[9]){    // check tech requirement
        if (parseInt(Seed.tech['tch'+k.substr(1)]) < uc[9][k][1]){
          t.stats.MaxTrain = 0;
          t.limitingFactor = null;
          break;
        }
      }
    }
	if (t.limitingFactor){
	  document.getElementById('ptttr_'+ t.limitingFactor).className = 'boldRed';
	  document.getElementById('ptttr2_'+ t.limitingFactor).className = 'boldRed';
	}    
    t.updateTopTroops();
  },

  clickTroopDo : function (){
    var t = Tabs.Train;
    var cityId = t.selectedCity.id;
    var unitId = t.TTselType.value;
    var perSlot = parseInt(t.TTinpPerSlot.value, 10);
    var numSlots = parseInt(t.TTinpSlots.value, 10);
    
    t.displayCityStats ();
    if (t.running){
      t.stopTraining('<SPAN class=boldRed>Training cancelled by user</span>');
      return; 
    }    
    if (perSlot<1){
      t.divTrainStatus.innerHTML = '<FONT COLOR=#550000>'+uW.g_js_strings.commonstr.invalid +' ('+uW.g_js_strings.modal_barracks_train.numtotrain+')</font>';
      return;
    }
    if (perSlot*numSlots > t.stats.MaxTrain){
      t.divTrainStatus.innerHTML = '<FONT COLOR=#550000>Can\'t train that many troops (max is '+ t.stats.MaxTrain +' total)</font>';
      return;
    }
    if (numSlots<1 || numSlots>t.stats.barracks - t.stats.queued){
      t.divTrainStatus.innerHTML = '<FONT COLOR=#550000>'+uW.g_js_strings.commonstr.invalid +' ('+uW.buildingcost.bdg13[0]+')</font>';
      return;
    }

	var tut = document.getElementById ('tutelage').value;
	var gamble = document.getElementById ('pttrgamble').value;
		
    t.TDbutDo.disabled = true;
    t.TTbutDo.className = 'ptButCancel';
    t.TTbutDo.value = 'CANCEL';
    var que = [];
    for (var i=0; i<numSlots; i++)
      que.push (['T', unitId, parseInt (perSlot)]);
    t.divTrainStatus.innerHTML = '';
    t.running = true;
    t.doQueue (cityId, tut, gamble, que);
  },

  
/*******  DEF  ******/  
  
  updateTopDef : function (){
    var t = Tabs.Train;
    var slots = parseInt(t.TDinpSlots.value, 10);
    if (isNaN(slots) || slots<0)
      slots = 0;
    t.TDspMax.innerHTML = uW.g_js_strings.commonstr.max+':'+ t.stats.MaxDefTrain +'&nbsp; '+uW.g_js_strings.commonstr.owned+':'+ t.stats.defOwned;   
    t.TDspMaxSlots.innerHTML = t.stats.wallLevel-t.stats.Dqueued;
    if (slots<1)
      t.TDspMaxPS.innerHTML = 0;
    else
      t.TDspMaxPS.innerHTML = parseInt(t.stats.MaxDefTrain / slots);

    t.TDspSpace.innerHTML = uW.buildingcost.bdg19[0]+' ('+uW.g_js_strings.guardian.cl1+'): <B>'+ t.stats.wallLevel +'\
    </b><BR>'+uW.g_js_strings.modal_openWalls.walldef+': \
    '+ (t.stats.wallSpaceUsed+t.stats.wallSpaceQueued)  +'/<B>'+ t.stats.wallSpace +'</b><BR>\
        '+uW.g_js_strings.modal_openWalls.fielddef+': '+ (t.stats.fieldSpaceUsed+t.stats.fieldSpaceQueued) +'/<B>'+ t.stats.fieldSpace +'</b>';
  },

  changeDefSelect : function (){
    var t = Tabs.Train;
    var cityId = t.selectedCity.id;
    // unitcost: NAME, Food, Wood, Stone, Ore, Gold, Pop, ?
    var id = t.TDselType.value;
    t.lastDefSelect = id;
    t.stats.defOwned = parseInt(Seed.fortifications['city' + cityId]['fort'+id]);    
    var uc = uW.fortcost['frt'+id];
    var max = 9999999999;
    if ( (t.stats.food / uc[1]) < max)
      max = t.stats.food / uc[1];
    if ( (t.stats.wood / uc[2]) < max)
      max = t.stats.wood / uc[2];
    if ( (t.stats.stone / uc[3]) < max)
      max = t.stats.stone / uc[3];
    if ( (t.stats.ore / uc[4]) < max)
      max = t.stats.ore / uc[4];
    if ( (t.stats.idlePop / uc[6]) < max)
      max = t.stats.idlePop / uc[6];
    t.stats.MaxDefTrain = parseIntNan (max);
    if (t.stats.MaxDefTrain < 0)
      t.stats.MaxDefTrain = 0;
    if (matTypeof(uc[8]) == 'object'){
      for (k in uc[8]){  // check building requirement
        var b = getCityBuilding (cityId, k.substr(1));
        if (b.maxLevel < uc[8][k][1]){
          t.stats.MaxDefTrain = 0;
          break;
        }
      }
    }
    if (matTypeof(uc[9]) == 'object'){
      for (k in uc[9]){    // check tech requirement
        if (parseInt(Seed.tech['tch'+k.substr(1)]) < uc[9][k][1]){
          t.stats.MaxDefTrain = 0;
          break;
        }
      }
    }

    var spaceEach = parseInt(uW.fortstats["unt"+ id][5]);
    if (id<60)
      var spaceAvail = t.stats.wallSpace - t.stats.wallSpaceUsed - t.stats.wallSpaceQueued;
    else
      var spaceAvail = t.stats.fieldSpace - t.stats.fieldSpaceUsed - t.stats.fieldSpaceQueued;
    if ( t.stats.MaxDefTrain * spaceEach > spaceAvail)
      t.stats.MaxDefTrain = parseInt(spaceAvail / spaceEach);
    
    t.updateTopDef();
  },
  
  clickDefMaxPS : function (){
    var t = Tabs.Train;
    var slots = parseInt(t.TDinpSlots.value, 10);
    if (slots<1)
      t.TDinpPerSlot.value = 0;
    else
      t.TDinpPerSlot.value = parseInt(t.stats.MaxDefTrain / slots);
  },

  clickDefMaxSlots : function (){
    var t = Tabs.Train;
    t.TDinpSlots.value = t.stats.wallLevel-t.stats.Dqueued;
  },
    
  clickDefDo : function (){
    var t = Tabs.Train;
    var cityId = t.selectedCity.id;
    var unitId = t.TDselType.value;
    var perSlot = parseInt(t.TDinpPerSlot.value, 10);
    var numSlots = parseInt(t.TDinpSlots.value, 10);
    
    t.displayCityStats ();
    if (t.running){
      t.stopTraining('<SPAN class=boldRed>'+uW.g_js_strings.commonstr.cancelled+'</span>');
      return; 
    }    
    if (perSlot<1){
      //t.divTrainStatus.innerHTML = '<FONT COLOR=#550000>Number of units per slot must be greater than 0.</font>';
      return;
    }
    if (perSlot*numSlots > t.stats.MaxDefTrain){
      t.divTrainStatus.innerHTML = '<FONT COLOR=#550000>'+ uW.g_js_strings.modal_attack.maxtroops +': '+ t.stats.MaxDefTrain +'</font>';
      return;
    }
    if (numSlots<1 || numSlots > t.stats.wallLevel-t.stats.Dqueued){
        t.divTrainStatus.innerHTML = '<FONT COLOR=#550000>'+uW.g_js_strings.commonstr.invalid+' ()</font>';
      return;
    }
    var siege = document.getElementById ('siege').value;
    t.TTbutDo.disabled = true;
    t.TDbutDo.className = 'ptButCancel';
    t.TDbutDo.value = 'CANCEL';
    var que = [];
    for (var i=0; i<numSlots; i++)
      que.push (['T', unitId, parseInt (perSlot)]);
    t.divTrainStatus.innerHTML = '';
    t.running = true;
    t.doDefQueue (cityId, siege, que);
  },

  doDefQueue : function (cityId, siege, que, errMsg){
    var t = Tabs.Train;
    clearTimeout (t.trainTimer);
    try {
      t.displayCityStats();
      if (errMsg){
        t.stopTraining ('<SPAN class=boldRed>ERROR: '+ errMsg +'</span>');
        return;
      }
      var cmd = que.shift();
      if (!cmd){
        t.stopTraining ('<B>Done queueing defenses.</b>');
        return;
      }
      if (cmd[0] == 'T'){
        t.dispTrainStatus ('Training '+ cmd[2] +' '+  fortNamesShort[cmd[1]] +' at '+ Cities.byID[cityId].name +' ('+ que.length +' slots remaining)<BR>');
        doDefTrain ( cityId, siege, cmd[1], cmd[2], 
          function(errMsg){
            t.trainTimer = setTimeout(function (){Tabs.Train.doDefQueue(cityId, siege, que, errMsg);}, (Math.random()*3500)+1500);
          } );
      }
    } catch (err) {
      logit (inspect (err, 8, 1));
      t.stopTraining ('<SPAN class=boldRed>PROGRAM ERROR: '+ err.message +'</span>');
    }
  },
  

  // fix KofC bugs ....
  // if first start time > now, make it now
  // if any end time != next start time, fix it
  fixQueTimes : function (q){
    var now = unixTime();
    if (q[0][2] > now)
      q[0][2] = now;
    for (var i=0; i<q.length; i++){
      if (q[i+1]!=null && q[i+1][2]!=q[i][3])
        q[i][3] = q[i+1][2];
    }        
  },

  expireTheQueue : function (q){
    if (q==null)
      return;
    var now = unixTime();
    while (q.length>0 && (q[0][3] - now) < 1)
      q.shift();
  },
    
  displayCityStats : function (){
    var t = Tabs.Train;
    var cityId = t.selectedCity.id;
    t.stats.food = parseInt (Seed.resources['city'+cityId].rec1[0]/3600);
    t.stats.wood = parseInt (Seed.resources['city'+cityId].rec2[0]/3600);
    t.stats.stone = parseInt (Seed.resources['city'+cityId].rec3[0]/3600);
    t.stats.ore = parseInt (Seed.resources['city'+cityId].rec4[0]/3600);
    t.stats.gold = Seed.citystats['city'+cityId].gold[0];
    if (Options.maxIdlePop)
      t.stats.idlePop = parseInt(Seed.citystats['city'+cityId].pop[0]);
    else
      t.stats.idlePop = parseInt(Seed.citystats['city'+cityId].pop[0]) - parseInt(Seed.citystats['city'+cityId].pop[3]);
    t.stats.barracks = getCityBuilding (cityId, 13).count;
    var m = '<CENTER><B>'+ Cities.byID[cityId].name +' &nbsp; ('+ Cities.byID[cityId].x +','+ Cities.byID[cityId].y +')</b></center><HR>';

    m += '<TABLE class=ptTab width=100%><TR align=center>';
    for(i=1;i<=6;i++){
    	m += '<TR><TD width=75px>'+uW.unitcost['unt'+i][0]+'</td><TD width=60px>'+addCommas(parseInt(Seed.units['city'+cityId]['unt'+i]))+'</td>';
    	m += '<TD width=75px>'+uW.unitcost['unt'+(i+6)][0]+'</td><TD width=60px>'+addCommas(parseInt(Seed.units['city'+cityId]['unt'+(i+6)]))+'</td>';
    	if (i<=4) m += '<TD width=75px><SPAN id=ptttr_'+uW.resourceinfo['rec'+i]+'>'+uW.resourceinfo['rec'+i]+'</span></td><TD width=60px><SPAN id=ptttr2_'+uW.resourceinfo['rec'+i]+'>'+addCommas(parseInt(Seed.resources['city'+cityId]['rec'+i][0]/3600))+'</span></td>';
    	if (i==5) m += '<TD width=75px><SPAN id=ptttr_gold>'+uW.resourceinfo['rec0']+'</span></td><TD width=60px><SPAN id=ptttr2_gold>'+addCommas(Seed.citystats['city'+cityId].gold[0])+'</span></td>';
    	if (i==6) m += '<TD width=75px><SPAN id=ptttr_pop>'+uW.g_js_strings.showPopTooltip.idlepop+'</td><TD width=60px><SPAN id=ptttr2_pop>'+addCommas(t.stats.idlePop)+'</td>';
    	m+='</tr>';
    }
    m+='</table>';
    document.getElementById ('divSTtop').innerHTML = m;
    
// troop queue .... 
    var totTime = 0;
    var q = Seed.queue_unt['city'+cityId];
    t.expireTheQueue(q);
    var qs = q.toString();
    var now = unixTime();
    if (q!=null && q.length>0)
      totTime = q[q.length-1][3] - now;
    if ( qs == t.lastQueString){
      if (q!=null && q.length>0){
        var cur = q[0][3] - now;
        document.getElementById ('ptttfq').innerHTML = timestr(cur, true);
      }
    } else {
      t.lastQueString = qs;
      t.stats.queued = 0;
      m = '<TABLE align=center class=ptTab>';
      if (q!=null && q.length>0 ){
        t.fixQueTimes (q);
        t.stats.queued = q.length;
        first = true;
		first_special = true;
        for (var i=0; i<q.length; i++){
          start = q[i][2];
          end = q[i][3];
          if (first || (q[i][7] && first_special))
            actual = end - now;
          else
            actual = end - lastEnd;
          if (actual < 0)
            actual = 0;
          q[i][6] = cityId;
		  //q[i][7] If true means special troop training
		  
          m += '<TR align=right><TD width="5px"><A><DIV onclick="cancelTrain('+ q[i][0]+','+q[i][1]+','+q[i][2]+','+q[i][3]+','+q[i][5]+','+q[i][6]+','+i +')">X</div></a></td>';
          m += '<TD>'+ q[i][1] +' </td><TD align=left> '+ uW.unitcost['unt'+q[i][0]][0];
          if (first || (q[i][7] && first_special))
            m += '</td><TD> &nbsp; '+  timestr(end-start, true) +'</td><TD> (<SPAN id=ptttfq>'+ timestr(actual, true) +'</span>)';
          else
            m += '</td><TD> &nbsp; '+  timestr(actual, true) +'</td></tr>'; 
          lastEnd = end;
          first = false;
		  if(q[i][7])
			first_special = false;
        }
      }
      m += '</table>';
      document.getElementById ('divSTleft').innerHTML = m;
    }
    m = t.stats.queued +' ' + uW.g_js_strings.commonstr.oftx +' ';
    if (t.stats.queued >= 0)
      m += t.stats.barracks;
    if (totTime > 0)
      m += ' - '+ uW.g_js_strings.commonstr.time + ': '+ uW.timestr(totTime);
    document.getElementById ('statTTtot').innerHTML = m;
    
// defense queue ....
    getWallInfo (cityId, t.stats);    
    var totTime = 0;
    var q = Seed.queue_fort['city'+cityId];
    t.expireTheQueue(q);
    var qs = q.toString();
    if (q!=null && q.length>0)
      totTime = q[q.length-1][3] - now;
    if ( qs == t.lastDQueString){
      if (q!=null && q.length>0){
        var cur = q[0][3] - now;
        document.getElementById ('pttdfq').innerHTML = timestr(cur, true);
      }
    } else {
      t.lastDQueString = qs;
      t.stats.Dqueued = 0;
      t.stats.wallSpaceQueued = 0;
      t.stats.fieldSpaceQueued = 0;
      m = '<TABLE align=center class=ptTab>';
      if (q!=null && q.length > 0 ){
        t.fixQueTimes (q);
        t.stats.Dqueued = q.length;
        first = true;
        for (i=0; i<q.length; i++){
          if (q[i][0] < 60)          
            t.stats.wallSpaceQueued += parseInt(uW.fortstats["unt"+ q[i][0]][5]) * parseInt(q[i][1]);
          else          
            t.stats.fieldSpaceQueued += parseInt(uW.fortstats["unt"+ q[i][0]][5]) * parseInt(q[i][1]);
          start = q[i][2];
          end = q[i][3];
          if (first)
            actual = end - now;
          else
            actual = end - lastEnd;
          if (actual < 0)
            actual = 0;
		  q[i][7]=cityId;
          m += '<TR align=right><TD width="5px"><A><DIV onclick="cancelFort('+ q[i][0]+','+q[i][1]+','+q[i][2]+','+q[i][3]+','+q[i][5]+','+q[i][6]+','+q[i][7] +','+ i +')">X</div></a></td>'
          m += '<TD>'+ q[i][1] +' </td><TD align=left> '+ fortNamesShort[q[i][0]];
          if (first)
            m += '</td><TD> &nbsp; '+  timestr(end-start, true) +'</td><TD> (<SPAN id=pttdfq>'+ timestr(actual, true) +'</span>)';
          else
            m += '</td><TD> &nbsp; '+  timestr(actual, true) +'</td></tr>'; 
          lastEnd = end;
          first = false;
        }
      }
      m += '</table>';
      document.getElementById ('divSTright').innerHTML = m;
    }
    m = t.stats.Dqueued +' slots';
    if (totTime > 0)
      m += ', '+ uW.timestr(totTime);
    document.getElementById ('statDTtot').innerHTML = m;
  },
  
  
  dispTrainStatus : function (msg){
    var t = Tabs.Train;
    t.divTrainStatus.innerHTML = msg + t.divTrainStatus.innerHTML;
  },

  butcancelTrain : function (typetrn, numtrptrn, trnTmp, trnETA, trnNeeded, cityId, trainingId){
    var t = Tabs.Train;
    var params = uW.Object.clone(uW.g_ajaxparams);
    
    params.pf =0;
    params.requestType = "CANCEL_TRAINING";
    params.cityId = cityId;
    params.typetrn = typetrn;
    params.numtrptrn =  numtrptrn;
    params.trnETA = trnETA;
    params.trnTmp = trnTmp;
    params.trnNeeded = trnNeeded;
    
    new AjaxRequest(uW.g_ajaxpath + "ajax/cancelTraining.php" + uW.g_ajaxsuffix, {
        method: "post",
        parameters: params,
        onSuccess: function (message) {
        var rslt=eval("("+message.responseText+")");
        if (rslt.ok) {
					var k=0;
					for(var j=0;j<Seed.queue_unt["city"+cityId].length;j++){
						if(j>trainingId){
							Seed.queue_unt["city"+cityId][j][2]=parseInt(rslt.dateTraining[k]["start"]);
							Seed.queue_unt["city"+cityId][j][3]=parseInt(rslt.dateTraining[k]["end"]);
							k++;
						}
					}
			
			Seed.queue_unt["city"+cityId].splice(trainingId,1);
			for(var i=1;i<5;i++){
				var totalReturn=parseInt(uW.unitcost["unt"+typetrn][i])*parseInt(numtrptrn)*3600/2;
				Seed.resources["city"+cityId]["rec"+i][0]=parseInt(Seed.resources["city"+cityId]["rec"+i][0])+totalReturn;
			}
        } 
        },
        onFailure: function () {
        },
    });
  },
  
 butcancelFort : function (typefrt, numtrpfrt, frtTmp, frtETA, frtNeeded, frtid, cityId, queueId){
   var t = Tabs.Train;
   var params = uW.Object.clone(uW.g_ajaxparams);
   
   params.pf =0;
   params.requestType = "CANCEL_FORTIFICATIONS";
   params.cityId = cityId;
   params.typefrt = typefrt;
   params.numtrpfrt =  numtrpfrt;
   params.frtETA = frtETA;
   params.frtTmp = frtTmp;
   params.frtNeeded = frtNeeded;
   params.frtid = frtid;
   
   new AjaxRequest(uW.g_ajaxpath + "ajax/cancelFortifications.php" + uW.g_ajaxsuffix, {
       method: "post",
       parameters: params,
       onSuccess: function (message) {
       var rslt=eval("("+message.responseText+")");
       if (rslt.ok) {
 			var k=0;
 			for(var j=0;j<Seed.queue_fort["city"+cityId].length;j++){
 				if(j>queueId){
 					Seed.queue_fort["city"+cityId][j][2]=parseInt(rslt.dateFortifications[k]["start"]);
 					Seed.queue_fort["city"+cityId][j][3]=parseInt(rslt.dateFortifications[k]["end"]);
 					k++;
 				}
 			}
			uW.update_seed(rslt.updateSeed);
 			Seed.queue_fort["city"+cityId].splice(queueId,1);
 			for(var i=1;i<5;i++){
 				Seed.resources["city"+cityId]["rec"+i][0]=parseInt(Seed.resources["city"+cityId]["rec"+i][0])+totalReturn;
 			}
 		}
       },
       onFailure: function () {
       },
   });
 },
 
  
  stopTraining : function (msg){
    var t = Tabs.Train;
    clearTimeout (t.trainTimer);
    t.trainTimer = null;
    t.dispTrainStatus (msg +'<BR>');
    t.TDbutDo.disabled = false;
    t.TTbutDo.disabled = false;
    t.TTbutDo.value = uW.g_js_strings.modal_openBarracks.trainttl;
    t.TDbutDo.value = uW.g_js_strings.modal_openWalls.builddefenses;
    t.TTbutDo.className = '';
    t.TDbutDo.className = '';
    t.running = false;
  },
  
  
  doQueue : function (cityId, tut, gamble, que, errMsg){
    var t = Tabs.Train;
    clearTimeout (t.trainTimer);
    try {
      t.displayCityStats();
      if (errMsg){
        t.stopTraining ('<SPAN class=boldRed>'+ errMsg +'</span>');
        return;
      }
      var cmd = que.shift();
      if (!cmd){
        t.stopTraining ('<B>'+uW.g_js_strings.update_queue.troopqueue+'</b>');
        return;
      }
      if (cmd[0] == 'T'){
        t.dispTrainStatus (uW.g_js_strings.modal_barracks_train.starttraining+': '+ cmd[2] +' '+  uW.unitcost['unt'+cmd[1]][0] +' at '+ Cities.byID[cityId].name +' ('+ que.length +' slots remaining)<BR>');
        doTrain (cityId, tut, gamble, cmd[1], cmd[2], 
          function(errMsg){
            if (t.running)
              t.trainTimer = setTimeout(function (){Tabs.Train.doQueue(cityId, tut, gamble, que, errMsg);}, (Math.random()*2500)+1000 );
          }
        );
      }
    } catch (err) {
      logit (inspect (err, 8, 1));
      t.stopTraining  ('<SPAN class=boldRed>'+uW.g_js_strings.barbarian.erroroccured +' '+ err.message +'</span>');
    }
  },

	doAutoTraps: function (cityNo) {
		var t = Tabs.Train;
		wall = {};
		var cityId = Cities.cities[cityNo - 1].id
		var cityID = 'city'+ cityId;
		getWallInfo (cityId, wall);
		availableSpace = wall.fieldSpace - wall.fieldSpaceUsed;
		if (availableSpace > 0 && wall.slotsBusy < 3) {
			var food = parseInt (Seed.resources['city'+cityId].rec1[0]/3600);
			var wood = parseInt (Seed.resources['city'+cityId].rec2[0]/3600);
			var stone = parseInt (Seed.resources['city'+cityId].rec3[0]/3600);
			var ore = parseInt (Seed.resources['city'+cityId].rec4[0]/3600);
			availableSlots = 3 - wall.slotsBusy;

			var foodRes = AutoTrainOptions.keepFood[cityNo];
			var woodRes = AutoTrainOptions.keepWood[cityNo];
			var stoneRes = AutoTrainOptions.keepStone[cityNo];
			var oreRes = AutoTrainOptions.keepOre[cityNo];
			var availFood = food - foodRes;
			var availWood = wood - woodRes;
			var availStone = stone - stoneRes;
			var availOre = ore - oreRes;
	
		        secsPerTrap = Cities.byID[cityId]['Def60Time'];
			if (secsPerTrap > 0 && availableSpace > 2 && availableSlots > 0) {
				if (availFood > 400 && availWood > 800 & availStone > 200 & availOre > 400) {
					var numberToTrain = 9999999999;
					if ((availFood / 400) < numberToTrain)
						numberToTrain = parseInt(availFood / 400);
					if ((availWood / 800) < numberToTrain)
						numberToTrain = parseInt(availWood / 800);
					if ((availStone / 200) < numberToTrain)
						numberToTrain = parseInt(availStone / 200);
					if ((availOre / 400) < numberToTrain)
						numberToTrain = parseInt(availOre / 400);
					if (numberToTrain > 5)
						numberToTrain = 5;
					if (wall.Trap + wall.TrapTraining < 10 || availableSpace < 15) {
						numberToTrain = 1;
					actionLog('Building 1 Trap in city ' + Cities.byID[cityId].name);
					} else
						actionLog('Building ' + numberToTrain + ' Traps in city ' + Cities.byID[cityId].name);
					try {
						doDefTrain (cityId, 60, numberToTrain);
					} catch (err) {
						logit (inspect (err, 8, 1));
					}
				}
			}
		}
	},

	doAutoCaltrops: function (cityNo) {
		var t = Tabs.Train;
		wall = {};
		var cityId = Cities.cities[cityNo - 1].id
		var cityID = 'city'+ cityId;
		getWallInfo (cityId, wall);
		availableSpace = wall.fieldSpace - wall.fieldSpaceUsed;
		if (availableSpace > 0 && wall.slotsBusy < 3) {
			var food = parseInt (Seed.resources['city'+cityId].rec1[0]/3600);
			var wood = parseInt (Seed.resources['city'+cityId].rec2[0]/3600);
			var stone = parseInt (Seed.resources['city'+cityId].rec3[0]/3600);
			var ore = parseInt (Seed.resources['city'+cityId].rec4[0]/3600);
			availableSlots = 3 - wall.slotsBusy;

			var foodRes = AutoTrainOptions.keepFood[cityNo];
			var woodRes = AutoTrainOptions.keepWood[cityNo];
			var stoneRes = AutoTrainOptions.keepStone[cityNo];
			var oreRes = AutoTrainOptions.keepOre[cityNo];
			var availFood = food - foodRes;
			var availWood = wood - woodRes;
			var availStone = stone - stoneRes;
			var availOre = ore - oreRes;

			secsPerCaltrop = Cities.byID[cityId]['Def61Time'];
			if (secsPerCaltrop > 0 && availableSpace > 2 && availableSlots > 0) {
				if (availFood > 100 && availWood > 400) {
					var numberToTrain = 9999999999;
					if ((availFood / 100) < numberToTrain)
						numberToTrain = parseInt(availFood / 100);
					if ((availWood / 400) < numberToTrain)
						numberToTrain = parseInt(availWood / 400);
					if (numberToTrain > 5)
						numberToTrain = 5;
					if (wall.Caltrops + wall.CaltropsTraining < 10 || availableSpace < 15) {
						numberToTrain = 1;
						actionLog('Building 1 Caltrop in city ' + Cities.byID[cityId].name);
					} else
						actionLog('Building ' + numberToTrain + ' Caltrops in city ' + Cities.byID[cityId].name);
					try {
						doDefTrain (cityId, 61, numberToTrain);
					} catch (err) {
						logit (inspect (err, 8, 1));
					}
				}
			}
		}
	},

	doAutoSpikes: function (cityNo) {
		var t = Tabs.Train;
		wall = {};
		var cityId = Cities.cities[cityNo - 1].id
		var cityID = 'city'+ cityId;
		getWallInfo (cityId, wall);
		availableSpace = wall.fieldSpace - wall.fieldSpaceUsed;
		if (availableSpace > 0 && wall.slotsBusy < 3) {
			var food = parseInt (Seed.resources['city'+cityId].rec1[0]/3600);
			var wood = parseInt (Seed.resources['city'+cityId].rec2[0]/3600);
			var stone = parseInt (Seed.resources['city'+cityId].rec3[0]/3600);
			var ore = parseInt (Seed.resources['city'+cityId].rec4[0]/3600);
			availableSlots = 3 - wall.slotsBusy;

			var foodRes = AutoTrainOptions.keepFood[cityNo];
			var woodRes = AutoTrainOptions.keepWood[cityNo];
			var stoneRes = AutoTrainOptions.keepStone[cityNo];
			var oreRes = AutoTrainOptions.keepOre[cityNo];
			var availFood = food - foodRes;
			var availWood = wood - woodRes;
			var availStone = stone - stoneRes;
			var availOre = ore - oreRes;

			secsPerSpike = Cities.byID[cityId]['Def62Time'];
			if (secsPerSpike > 0 && availableSpace > 2 && availableSlots > 0) {
				if (availFood > 150 && availWood > 750 & availStone > 50) {
					var numberToTrain = 9999999999;
					if ((availFood / 150) < numberToTrain)
						numberToTrain = parseInt(availFood / 150);
					if ((availWood / 750) < numberToTrain)
						numberToTrain = parseInt(availWood / 750);
					if ((availStone / 50) < numberToTrain)
						numberToTrain = parseInt(availStone / 50);
					if (numberToTrain > 5)
						numberToTrain = 5;
					if (wall.SpikedBarrier + wall.SpikedBarrierTraining < 10 || availableSpace < 15) {
						numberToTrain = 1;
						actionLog('Building 1 Spike in city ' + Cities.byID[cityId].name);
					} else
						actionLog('Building ' + numberToTrain + ' Spikes in city ' + Cities.byID[cityId].name);
					try {
						doDefTrain (cityId, 61, numberToTrain);
					} catch (err) {
						logit (inspect (err, 8, 1));
					}
				}
			}
		}
	},

	doAutoCrossbows: function (cityNo) {
		var t = Tabs.Train;
		wall = {};
		var cityId = Cities.cities[cityNo - 1].id
		var cityID = 'city'+ cityId;
		getWallInfo (cityId, wall);
		availableSpace = wall.wallSpace - wall.wallSpaceUsed;
		if (availableSpace > 0 && wall.slotsBusy < 2) {
			var food = parseInt (Seed.resources['city'+cityId].rec1[0]/3600);
			var wood = parseInt (Seed.resources['city'+cityId].rec2[0]/3600);
			var stone = parseInt (Seed.resources['city'+cityId].rec3[0]/3600);
			var ore = parseInt (Seed.resources['city'+cityId].rec4[0]/3600);
			availableSlots = 2 - wall.slotsBusy;

			var foodRes = AutoTrainOptions.keepFood[cityNo];
			var woodRes = AutoTrainOptions.keepWood[cityNo];
			var stoneRes = AutoTrainOptions.keepStone[cityNo];
			var oreRes = AutoTrainOptions.keepOre[cityNo];
			var availFood = food - foodRes;
			var availWood = wood - woodRes;
			var availStone = stone - stoneRes;
			var availOre = ore - oreRes;

	secsPerXbow = Cities.byID[cityId]['Def53Time'];
			if (secsPerXbow > 0 && availableSpace > 2 && availableSlots > 0) {
				if (availFood > 250 && availWood > 2000 & availStone > 750 & availOre > 500) {
					var numberToTrain = 9999999999;
					if ((availFood / 250) < numberToTrain)
						numberToTrain = parseInt(availFood / 250);
					if ((availWood / 2000) < numberToTrain)
						numberToTrain = parseInt(availWood / 2000);
					if ((availStone / 750) < numberToTrain)
						numberToTrain = parseInt(availStone / 750);
					if ((availOre / 500) < numberToTrain)
						numberToTrain = parseInt(availOre / 500);
					if (numberToTrain > 5)
						numberToTrain = 5;
					if (wall.Crossbows + wall.CrossbowsTraining < 10 || availableSpace < 15) {
						numberToTrain = 1;
					actionLog('Building 1 Crossbow in city ' + Cities.byID[cityId].name);
					} else
						actionLog('Building ' + numberToTrain + ' Crossbows in city ' + Cities.byID[cityId].name);
					try {
						doDefTrain (cityId, 53, numberToTrain);
					} catch (err) {
						logit (inspect (err, 8, 1));
					}
				}
			}
		}
	},

	doAutoTrain: function (cityNo) {
		var t = Tabs.Train;
		clearTimeout (t.nextAuto);
		var cityId = Cities.cities[cityNo - 1].id
		var cityID = 'city'+ cityId;
		var troopType = AutoTrainOptions.troopType[cityNo];
		if (troopType > 0) {
			var unitQ = Seed.queue_unt['city'+cityId];
			var queued=0;
			if (unitQ!=null && unitQ.length>0 )
				queued = unitQ.length;
			var slots = Cities.byID[cityId].numBarracks - queued;
			secsPerTroop = Cities.byID[cityId]['Troop'+troopType+'Time'];
			if (slots > 0 && secsPerTroop > 0)
				t.doAutoTroopTrain(cityNo);
		}
		if (AutoTrainOptions.doTraps[cityNo])
			t.doAutoTraps(cityNo);
		if (AutoTrainOptions.doCalrops[cityNo])
			t.doAutoCaltrops(cityNo);
		if (AutoTrainOptions.doSpikes[cityNo])
			t.doAutoSpikes(cityNo);
		if (AutoTrainOptions.doXbows[cityNo])
			t.doAutoCrossbows(cityNo);
		if (cityNo == Cities.numCities)
			t.nextAuto = setTimeout(function(){ t.doAutoTrain(1);}, (AutoTrainOptions.intervalSecs*1000));
		else
			t.nextAuto = setTimeout(function(){ t.doAutoTrain(cityNo+1);}, 7000);
	},
}

/*************************************** OVERVIEW TAB ************************************************/
var GMTclock = {
  span : null,
  timer : null,
  
  init : function (){
    this.span = document.createElement ('span');
    this.span.style.fontWeight = 'bold';
    document.getElementById('kochead_time').parentNode.appendChild (this.span);
    this.setEnable (Options.gmtClock);
  },

  setEnable : function (tf){
    var t = GMTclock;
    clearInterval (t.timer);
    if (tf){
      t.timer = setInterval (t.everySecond, 900);
    } else {
      t.span.innerHTML = '';
    }
  },
    
  everySecond : function (){
    var now = new Date();  
    now.setTime(now.getTime() + (now.getTimezoneOffset()*60000));
  	GMTclock.span.innerHTML = ' &nbsp; ('+ now.toLocaleFormat('%H:%M') +')';
  },
}


function getResourceProduction (cityId){
  var ret = [0,0,0,0,0];
  var now = unixTime ();
  var search='type==10 || type==11';
  var wilds = [0, 0, 0, 0, 0];
  var w = Seed.wilderness["city" + cityId];
  for (var k in w){
    var type = parseInt(w[k].tileType);

    if (type==10 || type==11)
	      wilds[1] += parseInt(w[k].tileLevel);
	    else 
	      wilds[type/10] += parseInt(w[k].tileLevel);
  }  
  knight = 0;       
  var s = Seed.knights["city" + cityId];
  if (s) {
    s = s["knt" + Seed.leaders["city" + cityId].resourcefulnessKnightId];
    if (s){
      var knight = parseInt(s.resourcefulness);
      if (s.resourcefulnessBoostExpireUnixtime > now)
        knight *= 1.25;
    }
  }
  var workerFactor = 1;
  var c = parseInt(Seed.citystats["city" + cityId]["pop"][0]);  // Current  population
  var w = parseInt(Seed.citystats["city" + cityId]["pop"][3]);  // Labor force
  if (w > c)
    workerFactor = c / w;
  
  for (var i=1; i<5; i++){
    var usage = Seed.resources["city" + cityId]["rec" + i];
    var items = 0;
    if (parseInt(Seed.playerEffects["r" + i + "BstExp"]) > now) {
      items = 0.25;
    }
    var tech = Seed.tech["tch" + i];
    ret[i] = parseInt((usage[2] * (1 + tech/10 + knight/100 + items + 0.05 * wilds[i]) * workerFactor + 100));
  }
  return ret;  
}

function getWallInfo (cityId, objOut){
  objOut.wallSpaceUsed = 0;
  objOut.fieldSpaceUsed = 0;
  objOut.wallLevel = 0;  
  objOut.wallSpace = 0;     
  objOut.fieldSpace = 0;  
  var b = Seed.buildings["city" + cityId];
  if (b.pos1==null)
    return;  
  objOut.wallLevel = parseInt(b.pos1[1]);
  var spots = 0;
  for (var i=1; i<(objOut.wallLevel+1); i++)
    spots += (i * 500);
  objOut.wallSpace = spots;     
  objOut.fieldSpace = spots;  
     
  var fort = Seed.fortifications["city" + cityId];
  for (k in fort){
    var id = parseInt(k.substr(4));
    if (id<60)
      objOut.wallSpaceUsed += parseInt(uW.fortstats["unt"+ id][5]) * parseInt(fort[k]);
    else
      objOut.fieldSpaceUsed += parseInt(uW.fortstats["unt"+ id][5]) * parseInt(fort[k]);
  }
}


Tabs.OverView = {
  tabOrder : 1,
  tabLabel : uW.g_js_strings.commonstr.overview,
  cont:null,
  displayTimer:null,
  curTabBut : null,
  curTabName : null,
  	
  init : function (div){
    var t = Tabs.OverView;
    dt = new Date ();
    dt.setTime (Seed.player.datejoinUnixTime * 1000);
    t.cont = div;
    
    var main = '<DIV class=ptstat style="margin-top:5px; margin-bottom:5px;"><TABLE cellspacing=0 cellpadding=0 class=ptTab width=97% align=center>';
    main +='<TR align=left><TD><SPAN class=ptStatLight>Joined on:</span> '+ dt.toLocaleDateString() +'</td>';
    main +='<TD><SPAN class=ptStatLight>Might:</span> ' + addCommas(Seed.player.might) +'</td>';
    main +='<TD><SPAN class=ptStatLight>Alliance:</span> ' + getMyAlliance()[1] +'</td>';
    main +='<TD align=right><SPAN class=ptStatLight>Domain:</span> ' + uW.domainName +'</td></tr></table></div>';      
	main +='<TABLE class=ptTab align=left><TR>';
    main +='<TD width=125px><SELECT id="ShowExtra"><option value="maximum">'+uW.g_js_strings.commonstr.maximum+'</options>';
    main +='<option value="normal">'+uW.g_js_strings.commonstr.normal+'</options></select></td>';
    main +='<TD><INPUT class=pbSubtab ID=ptmrchSubA type=submit value='+uW.g_js_strings.commonstr.resources+'></td>';
    main +='<TD><INPUT class=pbSubtab ID=ptmrchSubB type=submit value='+uW.g_js_strings.commonstr.troops+'></td>';
    main +='<TD><INPUT class=pbSubtab ID=ptmrchSubC type=submit value='+uW.g_js_strings.modaltitles.buildings+'></td>';
    main +='<TD><INPUT class=pbSubtab ID=ptmrchSubD type=submit value='+uW.g_js_strings.commonstr.info+'></td></tr></table><BR><BR>';
    main +='<DIV id=ptOverOutput align=left style="margin-top:10px; background-color:#F8F8F8; height:680px;"></div>';
	main += '<TD width = "100px" ; border:none"><a href="http://code.google.com/p/koc-power-tools/wiki/HowToOverview" target="_blank">HELP</a></td></tr>';
            
    t.cont.innerHTML = main;
    t.Overv = document.getElementById('ptOverOutput');
    
    document.getElementById('ShowExtra').value = Options.OverViewShowExtra; 
    document.getElementById('ptmrchSubA').addEventListener('click', e_butSubtab, false);
    document.getElementById('ptmrchSubB').addEventListener('click', e_butSubtab, false);
    document.getElementById('ptmrchSubC').addEventListener('click', e_butSubtab, false);
    document.getElementById('ptmrchSubD').addEventListener('click', e_butSubtab, false);
    document.getElementById('ShowExtra').addEventListener('change', function(){
           Options.OverViewShowExtra = document.getElementById('ShowExtra').value;
           saveOptions();
           clearTimeout (t.displayTimer);
           t.init(div); 
    }, false);
    changeSubtab (document.getElementById('ptmrchSub'+Options.curOverTab));
    
    function e_butSubtab (evt){            
      changeSubtab (evt.target);   
    }

    function changeSubtab (but){
      if (but == t.curTabBut)
        return;
      if (t.curTabBut){
        t.curTabBut.className='pbSubtab'; 
        t.curTabBut.disabled=false;
      }
      t.curTabBut = but;
      but.className='pbSubtab pbSubtabSel'; 
      but.disabled=true;
      t.curTabName = but.id.substr(-1);
	  Options.curOverTab = t.curTabName;
      t.show ();
    }    
  },

  hide : function (){
    var t = Tabs.OverView;
    clearTimeout (t.displayTimer);
  },
  
  show : function (){
    var t = Tabs.OverView;
    clearTimeout (t.displayTimer);
    if (t.curTabName == 'A') 
    	if (Options.OverViewShowExtra == "maximum") t.showResources(); 
    		else t.paintOld();
    else if (t.curTabName == 'B')
      t.showTroops();
    else if (t.curTabName == 'C')
      t.showBuilds();
    else if (t.curTabName == 'D')
      t.showInfo();
  },
  
      showResources : function (){
        var t = Tabs.OverView;
        t.Overv.innerHTML = null;
        t.Overv.style.maxHeight = '745px';
        t.Overv.style.overflowY = 'scroll';
		t.Overv.style.maxWidth = '745px';
		t.Overv.style.overflowX = 'scroll';
		
        clearTimeout (t.displayTimer);	
         var z = "<DIV id=overMain><TABLE class=ptTabOverview cellpadding=0 cellspacing=0><TR valign=top align=right><TD style='background: #FFFFFF; border:none;'></td>";
              for(i=0; i<Cities.numCities; i++) {
                z += "<TD width=81 style='background: #FFFFFF'><B>"+ Cities.cities[i].name.substring(0,11) +'</b><BR>'+ coordLink (Cities.cities[i].x, Cities.cities[i].y) +"<BR>"+ uW.provincenames['p'+ Cities.cities[i].provId];
                cityID = 'city'+Cities.cities[i].id;
                Gate = parseInt(Seed.citystats[cityID].gate);
                if(Gate == 0)
                  z+= '<BR>Hiding</td>';
                else
                  z+= '<BR><SPAN class=boldRed>Defending</span></td>';
              }
        	  for (var a=1; a<=5;a++){
        	  		var total = 0;
        	  		z+='<TR><TD colspan="8" style="background: #FFFFFF"><B>'+((a!=5)?uW.resourceinfo['rec'+a]:uW.resourceinfo['7'])+': </b></td></tr><TR>';
        	  		for(b=0; b<Cities.numCities; b++) total += parseInt((a!=5)?Seed.resources["city" + Seed.cities[b][0]]['rec'+a][0]/3600:Seed.resources["city" + Seed.cities[b][0]]['rec'+a][0]);
        	  		z+='<TD>'+ addCommas(total) +'</td>';
        	  		for(b=0; b<Cities.numCities; b++) z+='<TD align=right ">'+ addCommasInt((a!=5)?Seed.resources["city" + Seed.cities[b][0]]['rec'+a][0]/3600:Seed.resources["city" + Seed.cities[b][0]]['rec'+a][0]) +'</font></td>';
        	  		z+='</tr><TR><TD style="background: #FFFFFF"><FONT COLOR="686868">'+uW.g_js_strings.showResourceTooltip.caplimit+':</font></td>';
        	  		for(b=0; b<Cities.numCities; b++) {
        	  			    z+='<TD align=right style="background: #FFFFFF">';
							if(a==5){
								z+= (parseInt(1000000) > parseInt(Seed.resources["city" + Seed.cities[b][0]]['rec'+a][0]))? '<FONT COLOR= "669900">':'<FONT COLOR="686868">';
								z+= addCommas(1000000);
							} else{
								if (parseInt(Seed.resources["city" + Seed.cities[b][0]]['rec'+a][1]/3600) > parseInt(Seed.resources["city" + Seed.cities[b][0]]['rec'+a][0]/3600)) z+='<FONT COLOR= "669900">';
								else z+='<FONT COLOR="686868">';
								z+= addCommas( parseInt(Seed.resources["city" + Seed.cities[b][0]]['rec'+a][1]/3600));
							}
        	  				z+='</font></td>';
        	  		}
					if(a!=5){
						z+='</tr><TR><TD style="background: #FFFFFF"><FONT COLOR="686868">'+uW.g_js_strings.showResourceTooltip.hrprod+':</font></td>';
						for(b=0; b<Cities.numCities; b++) {
								var rp = getResourceProduction (Seed.cities[b][0]);
								var usage = parseInt(Seed.resources["city" + Seed.cities[b][0]]['rec'+a][3]);
								z+='<TD align=right style="background: #FFFFFF"><FONT COLOR="686868">'+ addCommas(rp[a] - usage)  +'</font></td>';
						}
					}
        	  		z+='</tr>';
        	  		if (a==1){
        	  			z+='<TR><TD style="background: #FFFFFF"><FONT COLOR="686868">'+uW.g_js_strings.commonstr.upkeep+':</font></td>';
        	  			for(b=0; b<Cities.numCities; b++){
        	  				 var rp = getResourceProduction (Seed.cities[b][0]);
        	  				 var usage = parseInt(Seed.resources["city" + Seed.cities[b][0]]['rec'+a][3]);
        	  				 var prod = rp[a] - usage;
        	  				 var timeLeft = parseInt(Seed.resources["city" + Seed.cities[b][0]]['rec'+a][0]) / 3600 / (0-prod) * 3600;
        				 	 if (prod > 0) z+='<TD align=right style="background: #FFFFFF"><FONT COLOR="686868">----</font></td>';
        	  				 else {
        		  				 if (Options.enableFoodWarn && timeLeft<(Options.foodWarnHours*3600)) z+='<TD align=right style="background: #FFFFFF"><FONT COLOR=RED>';
        		  				 else  z+='<TD align=right style="background: #FFFFFF"> <FONT COLOR="686868">';
        		  				 z+= timestrShort(timeLeft) +'</font></td>';
        		  				 
        	  				}
        	  		   }
        	  	    }
        	  	  var totalmarching = 0;
        	  	  for(b=0; b<Cities.numCities; b++) {
        	  	  	   var march = Seed.queue_atkp['city' + Seed.cities[b][0]];
        	  	  	   if (march != []) for (c in march) 
        	  	  	   		if (march[c]['resource'+a] != undefined && march[c]['marchType'] != 9) totalmarching += parseInt(march[c]['resource'+a]);
        	  	  } 
        	  	  if (totalmarching > 0){
		        	  	  z+='</tr><TR><TD style="background: #FFFFFF"><FONT COLOR="686868">'+uW.g_js_strings.commonstr.marching+':</font></td>';
		        	  	  for(b=0; b<Cities.numCities; b++) {
		        	  	  	   var recmarching = 0;
		        	  	  	   var march = Seed.queue_atkp['city' + Seed.cities[b][0]];
		        	  	  	   if (march != []) for (c in march) 
		        	  	  	   		if (march[c]['resource'+a] != undefined && march[c]['marchType'] != 9) recmarching += (parseInt(march[c]['resource'+a]));
		        	  	       if (recmarching !=0)	z+= '<TD align=right style="background: #FFFFFF"><FONT COLOR="686868">'+addCommas(recmarching)+'</font></td>';
		        	  	       else z+= '<TD align=right style="background: #FFFFFF"></td>';
		        	  	  }	
		       	  }
        	  }
        	  z+='</tr><TR><TD colspan="8" style="background: #FFFFFF; border:none">&nbsp;</td><TR><TD colspan="8" style="background: #FFFFFF"><B>'+uW.g_js_strings.commonstr.gold+':</b></td></tr><TR>';
        	  var goldtotal = 0;
        	  for(b=0; b<Cities.numCities; b++) goldtotal += parseInt(Seed.citystats["city" + Seed.cities[b][0]]['gold'][0]);
        	  z+='<TD>'+addCommas(goldtotal)+'</td>';
        	  for(b=0; b<Cities.numCities; b++) {
        	  		z+='<TD align=right >'+ addCommas(Seed.citystats["city" + Seed.cities[b][0]]['gold'][0])  +'</td>';
        	  }
        	  z+='<TR><TD style="background: #FFFFFF"><FONT COLOR="686868">'+uW.g_js_strings.showGoldTooltip.netincome+':</font></td>';
        	  for(b=0; b<Cities.numCities; b++) {
        	  		var f = 1;
        	  		if (parseInt(Seed.playerEffects.r0BstExp) > unixTime()) f = 2;
        	  		var g = parseInt(parseInt(Seed.citystats["city" + Seed.cities[b][0]]['gold'][1] * Seed.citystats["city" + Seed.cities[b][0]]['pop'][0]) * 0.01) * f;
        	  		var h = parseInt(Seed.citystats["city" + Seed.cities[b][0]]["gold"][2] * 10 * -1);
        	  		z+='<TD align=right style="background: #FFFFFF"><FONT COLOR="686868">'+ addCommas(g+h)  +'</font></td>';
        	  }
        	  z+='</tr><TR><TD colspan="8" style="background: #FFFFFF">&nbsp;</td> </tr><TR><TD style="background: #F8F8F8"><B>'+uW.g_js_strings.showPopTooltip.idlepop+':</b></td>';
        	  for(b=0; b<Cities.numCities; b++) {
    	  			var i = Seed.citystats["city" + Seed.cities[b][0]]['pop'][0];
    	  			var j = Seed.citystats["city" + Seed.cities[b][0]]['pop'][3];
    	  			var k = i - j;
    	  			if (k > 0) z+='<TD align=right style="background: #FFFFFF">'+ addCommas(k)  +'</td>'; 
    	  			 else z+='<TD align=right style="background: #FFFFFF"><FONT COLOR=red>'+ addCommas(k)  +'</font></td>';
        	  }  
        	 z+='</tr><TR><TD colspan="8" style="background: #FFFFFF">&nbsp;</td> </tr><TR><TD style="background: #F8F8F8"><B>'+uW.g_js_strings.showMyWilderness.conqueredwild+':</b></td>';
        		for(b=0; b<Cities.numCities; b++) {
        		      var totWilds = 0;
        			  dat = Seed.wilderness['city'+ Seed.cities[b][0]];
        			  if (dat!=null && matTypeof(dat)=='object')
        		  			for (k in dat)
        		    			++totWilds;
        			 var castle = parseInt(Seed.buildings['city'+ Seed.cities[b][0]].pos0[1]);
        			 if(castle == 11) castle = 12;
        			 else if(castle == 12) castle = 14;
        			 if (totWilds < castle)
        		  	z+=  '<TD align=right "><FONT COLOR=RED>'+ totWilds +'/'+ castle +'</font></span>';
        			else
        		  		z+=  '<TD align=right>'+ totWilds +'/'+ castle +'</span>';
        		}
        		z+='</tr>';
              for (c in uW.cm.WILDERNESS_TYPES){
              		var wildtype ='';
              		switch (c) {
              		  case 'GRASSLAND' : wildtype = uW.g_js_strings.commonstr.grassland;break;
              		  case 'LAKE' : wildtype = uW.g_js_strings.commonstr.lake;break;
              		  case 'WOODS' : wildtype = uW.g_js_strings.commonstr.woods;break;
              		  case 'HILLS' : wildtype = uW.g_js_strings.commonstr.hills;break;
              		  case 'MOUNTAIN' : wildtype = uW.g_js_strings.commonstr.mountain;break;
              		  case 'PLAIN' : wildtype = uW.g_js_strings.commonstr.plain;break;
              		}
              		var grandtotal = 0;
              		for(b=0; b<Cities.numCities; b++) {
              			dat = Seed.wilderness['city'+ Seed.cities[b][0]];
              			if (dat!=null && matTypeof(dat)=='object') for (k in dat) if (dat[k]['tileType'] == uW.cm.WILDERNESS_TYPES[c]) grandtotal++; 
              		}
              		if (grandtotal >0) {
		              		z+='<TR><TD style="background: #FFFFFF">'+wildtype+'</td>';
		              		for(b=0; b<Cities.numCities; b++) {		
		              			var total =0;
		              			dat = Seed.wilderness['city'+ Seed.cities[b][0]];
		              			if (dat!=null && matTypeof(dat)=='object')
		              					for (k in dat)
		              						if (dat[k]['tileType'] == uW.cm.WILDERNESS_TYPES[c])
		              							++total;  
		        				if (total >0) z+='<TD align=right style="background: #FFFFFF">'+total+'</td>';
		        				else z+='<TD style="background: #FFFFFF"></td>';
		        					
		              		}
		              		z+='</tr>';
		      	    }       
              }
             
        var totboosts = false;
        	  var l = Seed.playerEffects;
            for (p in l) if (l[p] > unixTime()) totboosts =true;               
            if (totboosts) {
                z+='</tr><TR><TD colspan="8" style="background: #FFFFFF; border:none">&nbsp;</td> </tr><TR><TD style="background: #F8F8F8"><B>'+uW.g_js_strings.commonstr.boost+':</b></td>';
                for (p in l) {
                   if (p =='r0BstExp' && l[p] > unixTime()) z+='<TR><TD style="background: #FFFFFF">'+uW.resourceinfo['rec'+0]+'</td><TD align=right style="background: #FFFFFF">'+ timestr((l[p] - unixTime())) +'</td></tr>';
                   if (p =='r1BstExp' && l[p] > unixTime()) z+='<TR><TD style="background: #FFFFFF">'+uW.resourceinfo['rec'+1]+'</td><TD align=right style="background: #FFFFFF">'+ timestr((l[p] - unixTime())) +'</td></tr>';
                   if (p =='r2BstExp' && l[p] > unixTime()) z+='<TR><TD style="background: #FFFFFF">'+uW.resourceinfo['rec'+2]+'</td><TD align=right style="background: #FFFFFF">'+ timestr((l[p] - unixTime())) +'</td></tr>';
                   if (p =='r3BstExp' && l[p] > unixTime()) z+='<TR><TD style="background: #FFFFFF">'+uW.resourceinfo['rec'+3]+'</td><TD align=right style="background: #FFFFFF">'+ timestr((l[p] - unixTime())) +'</td></tr>';
                   if (p =='r4BstExp' && l[p] > unixTime()) z+='<TR><TD style="background: #FFFFFF">'+uW.resourceinfo['rec'+4]+'</td><TD align=right style="background: #FFFFFF">'+ timestr((l[p] - unixTime())) +'</td></tr>';
                   if (p =='atkExpire' && l[p] > unixTime()) z+='<TR><TD style="background: #FFFFFF">'+uW.g_js_strings.commonstr.attack+'</td><TD align=right style="background: #FFFFFF">'+ timestr((l[p] - unixTime())) +'</td></tr>';
                   if (p =='defExpire' && l[p] > unixTime()) z+='<TR><TD style="background: #FFFFFF">'+uW.g_js_strings.commonstr.defend+'</td><TD align=right style="background: #FFFFFF">'+ timestr((l[p] - unixTime())) +'</td></tr>';
                   if (p =='loadExpire' && l[p] > unixTime()) z+='<TR><TD style="background: #FFFFFF">'+uW.g_js_strings.modal_barracks_train.load+'</td><TD align=right style="background: #FFFFFF">'+ timestr((l[p] - unixTime())) +'</td></tr>';
                   if (p =='returnExpire' && l[p] > unixTime()) z+='<TR><TD style="background: #FFFFFF">'+uW.g_js_strings.commonstr.returning+'</td><TD align=right style="background: #FFFFFF">'+ timestr((l[p] - unixTime())) +'</td></tr>';
                   if (p =='troopUpkeepReductExp' && l[p] > unixTime()) z+='<TR><TD style="background: #FFFFFF">'+uW.g_js_strings.commonstr.upkeep+'</td><TD align=right style="background: #FFFFFF">'+ timestr((l[p] - unixTime())) +'</td></tr>';
                   if (p =='fogExpire' && l[p] > unixTime()) z+='<TR ><TD style="background: #FFFFFF">'+uW.itemlist.i10021.name+'</td><TD align=right style="background: #FFFFFF">'+ timestr((l[p] - unixTime())) +'</td></tr>';
               }
            }      
        z+='</table></div>';
      t.Overv.innerHTML = z;
     	t.displayTimer = setTimeout (t.showResources, 1000);  
   },   
      
        
    showTroops : function (){
      var t = Tabs.OverView;
      t.Overv.innerHTML =null;
      t.Overv.style.maxHeight = '650px';
	  t.Overv.style.overflowY = 'scroll';	
	  t.Overv.style.maxWidth = '745px';
      t.Overv.style.overflowX = 'scroll';	
      var n = "<TABLE class=ptTabOverview cellpadding=0 cellspacing=0><TR valign=top align=right></td><TD colspan='2' id=update align=center style='background: #FFFFFF; border:none; vertical-align:middle'><INPUT id=TEST type=submit value="+uW.g_js_strings.modal_progress_actions.updatestatus+"></td></td>";
           for(i=0; i<Cities.numCities; i++) {
             n += "<TD width=81 style='background: #FFFFFF'><B>"+ Cities.cities[i].name.substring(0,11) +'</b><BR>'+ coordLink (Cities.cities[i].x, Cities.cities[i].y) +"<BR>"+ uW.provincenames['p'+ Cities.cities[i].provId] +"</td>";
           }
   	  for(a=1;a<14;a++) {
   	        var total=0;
   	        var marching = 0;
   	        var raiding = 0;
   	        var tottraining = 0;
   	        
   	        for(b=0; b<Cities.numCities; b++) {
   	        	   var train = Seed.queue_unt['city' + Seed.cities[b][0]];
   	        	   if (train != []) for (c in train) if (train[c][0] == a) tottraining += parseInt(train[c][1]);
   	        }
   	        if (tottraining > 0) var rowsp = 3; 
   	        else var rowsp = 2; 
   	        n+='<TR><TD rowspan="'+rowsp+'" style="background: #FFFFFF; vertical-align:top;"><img src=http://cdn1.kingdomsofcamelot.com/fb/e2/src/img/units/unit_'+a+'_30.jpg></td>';
   	        for(b=0; b<Cities.numCities; b++) total += parseInt(Seed.units['city' + Seed.cities[b][0]]['unt'+a]);
   	        if (total >0) n+='<TD align=right >'+addCommas(total)+'</td>';
   	        else n+='<TD align=right >&nbsp;</td>';
   	        for(b=0; b<Cities.numCities; b++) {
   	        	if (Seed.units['city' + Seed.cities[b][0]]['unt'+a] > 0) n+= '<TD align=right >'+addCommas(Seed.units['city' + Seed.cities[b][0]]['unt'+a])+'</td>';
   	        	else n+='<TD ></td>';
   	        }
   	        n+='</tr><TR><TD style="background: #FFFFFF"><FONT COLOR="686868">'+uW.g_js_strings.commonstr.marching+'</font></td>';
   	        for(b=0; b<Cities.numCities; b++) {
   	        	   marching = 0;
   	        	   raiding = 0;
   	        	   var atkp = Seed.queue_atkp['city' + Seed.cities[b][0]];
   	        	   if (atkp != []){
	   	        	   for (c in atkp){
	   	        	   		if (atkp[c]['marchType'] == 9) raiding += (parseInt(atkp[c]['unit'+a+'Count']) + parseInt(atkp[c]['unit'+a+'Return']));
	   	        	   		else if (atkp[c]['marchType'] != undefined)marching += parseInt(atkp[c]['unit'+a+'Count']);
	   	        	   }
	   	        	   if (marching >0 || raiding > 0) {
	   	        	   		n+= '<TD align=right style="background: #FFFFFF"><FONT COLOR="686868">'+addCommas(marching)+' / ';
	   	        	   		n+= addCommas(raiding)+'</font></td>';
   	        	   	   }
   	        	   	   else n+='<TD style="background: #FFFFFF"></td>';	
   	        	   }
   	        }
   	      if (tottraining >0){
   	        n+='</tr><TR><TD style="background: #FFFFFF"><FONT COLOR="686868">'+uW.g_js_strings.modal_openBarracks.trainingttl+'</font></td>';
   	        for(b=0; b<Cities.numCities; b++) {
   	        	   training = 0;
   	        	   var train = Seed.queue_unt['city' + Seed.cities[b][0]];
   	        	   if (train != []){
	   	        	   for (c in train) if (train[c][0] == a) training += parseInt(train[c][1]);
	   	        	   if (training >0) {
	   	        	   		n+= '<TD align=right style="background: #FFFFFF"><FONT COLOR="686868">'+addCommas(training)+'</font></td>';
   	        	   	   }
   	        	   	   else n+='<TD style="background: #FFFFFF"></td>';	
   	        	   }
   	      }
   	  		n+='</tr>';
   	  	}
   	  }
   	  n+='<TR><TD colspan="8" style="background: #FFFFFF; border:none;">&nbsp;</td> </tr>';
      n+='<TR><TD colspan="2" style="border=solid">'+uW.g_js_strings.openKnights.myknights+':</td>';
      for(b=0; b<Cities.numCities; b++) {
           var knights=0;
           var knightscity = Seed.knights['city' + Seed.cities[b][0]];
           if (knightscity != []) for (c in knightscity) if (knightscity[c]['knightId'] > 0) knights++;
        	 n+= '<TD align=right >'+knights+'</td>';	
      }
      n+='</tr><TR><TD colspan="2" >'+uW.g_js_strings.commonstr.combat+':</td>';
      for(b=0; b<Cities.numCities; b++) {
           var combat=0;
           var knightscity = Seed.knights['city' + Seed.cities[b][0]];
           if (knightscity != []) for (c in knightscity) if (knightscity[c]['combat'] > combat) 
               if (Seed.leaders['city' + Seed.cities[b][0]]['combatKnightId'] != knightscity[c]['knightId'])  combat = knightscity[c]['combat'];
        	 n+= '<TD align=right style="background: #FFFFFF">'+combat+'</td>';	
      }
      
      n+='<TR><TD colspan="8" style="background: #FFFFFF; border:none;">&nbsp;</td> </tr>';
      n+='<TR><TD colspan="2" style="border=solid">'+uW.g_js_strings.modal_barracks_trainingtab.totaltraintime+':</td>';
      for(b=0; b<Cities.numCities; b++) {
           var time=0;
           now = unixTime();
           var  unt = Seed.queue_unt['city' + Seed.cities[b][0]];
           //alert(unt.length);
           if (unt != null && unt.length > 0) time = (unt[unt.length-1][3] - now);
           if (time < 0) time=0;
           if (time < 3600) n+= '<TD align=right ><FONT COLOR=red>'+timestr(time)+'</font></td>';	
           else n+= '<TD align=right >'+timestr(time)+'</td>';	
      }
      
      
      
   	  n+='</tr></table>';
   	  t.Overv.innerHTML = n;
   	  
   	  document.getElementById('TEST').addEventListener('click', function(){
   	  		var params = uW.Object.clone(uW.g_ajaxparams);
   	    			new AjaxRequest(uW.g_ajaxpath + "/fb/e2/src/main_src.php?g=&y=0&n=nan001&l=nl_NL&messagebox=&standalone=0&res=1&iframe=1&lang=en&ts=1304248288.7067&s=250&appBar=" + uW.g_ajaxsuffix, {
   	    			    method: "POST",
   	    			    parameters: params,
   	    			    onSuccess: function (rslt) {
   	    			        var mainSrcHTMLCode = rslt.responseText;
   	    			    	var myregexp = /var seed=\{.*?\};/;
   	    			    	var match = myregexp.exec(mainSrcHTMLCode);
   	    			    	if (match != null) {
   	    			    		result = match[0];
   	    			    		result = result.substr(4);
   	    			    		var seed = eval(result);
   	  	  			    		uW.document.seed = seed;
   	  	  			    		Seed = seed;
   	  	  			    		uW.seed = seed;
   	  	  			    		document.getElementById('update').style.background ='#99FF99';
   	  	  			    		setTimeout(function(){ (document.getElementById('update').style.background ='#FFFFF'); }, 1000);
   	    			    	}
   	    			    },
   	    			    onFailure: function () {
   	    			      if (notify != null)
   	    			        notify(rslt.errorMsg);
   	    			    },
   	    			});
   	  	
   	  }, false);
   	    	
      t.displayTimer = setTimeout (t.showTroops, 1000);  
    },
	
	
  showBuilds : function (){
    var t = Tabs.OverView;
    clearTimeout (t.displayTimer);
    t.Overv.innerHTML =null;
    t.Overv.style.maxHeight = '650px';
    t.Overv.style.overflowY = 'scroll';	
	t.Overv.style.maxWidth = '745px';
    t.Overv.style.overflowX = 'scroll';	
    var wall=0;
    var blacksmith=0;
    var fletching=0;
    var geometry = 0;
    var metalalloys = 0;
    var logging = 0;
    var poisonededge = 0;

    var FieldSpace = {1:13,
    			  2:16,
    			  3:19,
    			  4:22,
    			  5:25,
    			  6:28,
    			  7:31,
    			  8:34,
    			  9:37,
    			  10:40,
    			  11:41,
    			  12:42};
    			  		   
    fertilizer = Seed.tech['tch1'];
    logging = Seed.tech['tch2'];
    stoneworking = Seed.tech['tch3'];
    mining = Seed.tech['tch4'];
    geometry = Seed.tech['tch5'];
    eagleeyes = Seed.tech['tch6'];
    poisonededge = Seed.tech['tch8'];
    metalalloys = Seed.tech['tch9'];
    featherweightpowder = Seed.tech['tch10'];
    magicalmapping = Seed.tech['tch11'];
    alloyhorseshoes = Seed.tech['tch12'];
    fletching = Seed.tech['tch13'];
    shrinkingpowder = Seed.tech['tch14'];
    healingpotions = Seed.tech['tch15'];
    giantsstrength = Seed.tech['tch16'];			  		       
    
    var m = '<DIV id=BuildsDiv style="font-size:12px"><TABLE cellpadding=5 cellspacing=0 border="1" style="border: 1px solid; border-style: none none none none;"><TR valign=top align=right>';
    m += "<TD align=left width=85 style='background-color:"+Colors.OverviewDarkRow+";'><INPUT id=showReq type=checkbox " + (t.showReq?'CHECKED ':'') +">Show missing req.</td>";
    for(i=0; i<Cities.numCities; i++) {
      m += "<TD width=79 style='background-color:"+Colors.OverviewDarkRow+"'><B>"+ Cities.cities[i].name.substring(0,11) +"</b><BR>"+ coordLink(Cities.cities[i].x, Cities.cities[i].y) +"<BR></td>";
    }
    m+='<TR valign=top align=right><TD width=85 style="background-color:'+Colors.OverviewDarkRow+';">Building</td>';	
    for(i=0; i<Seed.cities.length; i++) {
    	city = 'city'+Seed.cities[i][0];
    	m+='<TD width=79 style="background:#FFFFFF">';
    	if (Seed.queue_con[city][0] != undefined) {
    		m+=uW.buildingcost['bdg' + Seed.queue_con[city][0][0]][0];
    		m+=' ('+Seed.queue_con[city][0][1]+')';
    		m+='<br>'+ timestr((Seed.queue_con[city][0][4] - unixTime()),true);
    	}
    	m+='</td>';	
    }
    m+='</tr>';
    m+='<TR valign=top align=right><TD width=85 style="background-color:'+Colors.OverviewDarkRow+';">Researching</td>';	
    for(i=0; i<Seed.cities.length; i++) {
    	city = 'city'+Seed.cities[i][0];
    	m+='<TD width=79 style="background:#FFFFFF">';
    	if (Seed.queue_tch[city][0] != undefined) {
    		m+=uW.techcost['tch' + Seed.queue_tch[city][0][0]][0];
    		m+=' ('+Seed.queue_tch[city][0][1]+')';
    		m+='<br>'+ timestr((Seed.queue_tch[city][0][3] - unixTime()),true);
    	}
    	m+='</td>';		
    }
    m+='</tr><TR><TD colspan="8" style="background: #FFFFFF; border:none">&nbsp;</td></tr>';
    m+='<TR valign=top align=right><TD width=85 style="background-color:'+Colors.OverviewDarkRow+';">'+uW.fortcost['frt53'][0]+'</td>';
    for (i=0;i<Seed.cities.length;i++){
    	city = 'city'+Seed.cities[i][0];
    	for (y in Seed.buildings[city]) {
    		if (Seed.buildings[city][y][0] == 15) blacksmith = Seed.buildings[city][y][1]; 
    	}
    	wall = parseInt(Seed.buildings[city].pos1[1]);
    	var WallSpace = 0;
    	for (var b = 1; b < (wall + 1); b++) {WallSpace += (b * 1000)};
    	max = WallSpace/2/2 - parseInt(Seed.fortifications[city]["fort53"]) - parseInt(Seed.fortifications[city]["fort55"]);
    	m+= '<TD width=79 style="background:#FFFFFF">' + Seed.fortifications[city]["fort53"];
    	if (wall >=6 && blacksmith >=6 && fletching >=5 && max > 0) m+= '<br>Left: ' + max +'</td>';
    	else if (t.showReq){
    			if (wall < 6) m+= '<br><FONT COLOR= "CC0000">Wall: ' + wall + '(6)</font>';
    			if (blacksmith < 6) m+= '<br><FONT COLOR= "CC0000">BlackS.: ' + blacksmith + '(6)</font>';
    			if (fletching < 5) m+= '<br><FONT COLOR= "CC0000">Fletch.: ' + fletching + '(5)</font>';
    			m+='</td>';
    		} 		
    }
    m+='</tr><TR valign=top align=right><TD width=85 style="background-color:'+Colors.OverviewDarkRow+';">'+uW.fortcost['frt55'][0]+'</td>';
    for (i=0;i<Seed.cities.length;i++){
    	city = 'city'+Seed.cities[i][0];
    	for (y in Seed.buildings[city]) {
    		if (Seed.buildings[city][y][0] == 15) blacksmith = Seed.buildings[city][y][1]; 
    	}
    	wall = parseInt(Seed.buildings[city].pos1[1]);
    	var WallSpace = 0;
    	for (var b = 1; b < (wall + 1); b++) {WallSpace += (b * 1000)};
    	max = WallSpace/2/4 - parseInt(Seed.fortifications[city]["fort53"]) - parseInt(Seed.fortifications[city]["fort55"]);
    	m+=  '<TD width=79 style="background:#FFFFFF">' +Seed.fortifications[city]["fort55"];
    	if (wall >=8 && blacksmith >=8 && fletching >=7 && geometry>=7 && max > 0) m+= '<br>Left: ' + max+'</td>';
    	else if (t.showReq){
    			if (wall < 8) m+= '<br><FONT COLOR= "CC0000">Wall: ' + wall + '(8)</font>';
    			if (blacksmith < 8) m+= '<br><FONT COLOR= "CC0000">BlackS.: ' + blacksmith + '(8)</font>';
    			if (fletching < 7) m+= '<br><FONT COLOR= "CC0000">Fletch.: ' + fletching + '(7)</font>';
    			if (geometry < 7) m+= '<br><FONT COLOR= "CC0000">Geomet.: ' + geometry + '(7)</font>';
    			m+='</td>';
    	} 	
    }
    m+='<TR valign=top align=right><TD width=85 style="background-color:'+Colors.OverviewDarkRow+';">Wall defences</td>';
    for (i=0;i<Seed.cities.length;i++){
    	city = 'city'+Seed.cities[i][0];
    	wall = parseInt(Seed.buildings[city].pos1[1]);
    	build = (parseInt(Seed.fortifications[city]["fort53"])*2)+ (parseInt(Seed.fortifications[city]["fort55"])*4);
    	var WallSpace = 0;
    	for (var b = 1; b < (wall + 1); b++) {WallSpace += (b * 1000)};
    	max = WallSpace/2;
    	if (build < max) m+='<TD width=79 style="background:#FFFFFF"><FONT COLOR= "CC0000">';
    	else m+='<TD width=79 style="background:#FFFFFF"><FONT COLOR= "669900">';
    	m+= build+'</font>';
    	m+= '/' + max +'</td>';
    }
    m+='</tr><TR valign=top align=right><TD width=85 style="background-color:'+Colors.OverviewDarkRow+';">'+uW.fortcost['frt60'][0]+'</td>';
    for (i=0;i<Seed.cities.length;i++){
    	city = 'city'+Seed.cities[i][0];
    	for (y in Seed.buildings[city]) {
    		if (Seed.buildings[city][y][0] == 15) blacksmith = Seed.buildings[city][y][1]; 
    	}
    	wall = parseInt(Seed.buildings[city].pos1[1]);
    	var WallSpace = 0;
    	for (var b = 1; b < (wall + 1); b++) {WallSpace += (b * 1000)};
    	max = WallSpace/2/4 - (parseInt(Seed.fortifications[city]["fort60"])*4) - (parseInt(Seed.fortifications[city]["fort61"])*1) - (parseInt(Seed.fortifications[city]["fort62"])*3);
    	m+=  '<TD width=79 style="background:#FFFFFF">'+Seed.fortifications[city]["fort60"];
    	if (wall >=4 && blacksmith >=4 && poisonededge>=4 && max>0) m+= '<br>Left: ' + max+'</td>';
    	else if (t.showReq){
    			if (wall < 4) m+= '<br><FONT COLOR= "CC0000">Wall: ' + wall + '(4)</font>';
    			if (blacksmith < 4) m+= '<br><FONT COLOR= "CC0000">BlackS.: ' + blacksmith + '(4)</font>';
    			if (poisonededge < 4) m+= '<br><FONT COLOR= "CC0000">Poison.: ' + poisonededge + '(4)</font>';
    			m+='</td>';
    	} 	
    }
    m+='</tr><TR valign=top align=right><TD width=85 style="background-color:'+Colors.OverviewDarkRow+';">'+uW.fortcost['frt61'][0]+'</td>';
    for (i=0;i<Seed.cities.length;i++){
    	city = 'city'+Seed.cities[i][0];
    	for (y in Seed.buildings[city]) {
    		if (Seed.buildings[city][y][0] == 15) blacksmith = Seed.buildings[city][y][1]; 
    	}
    	wall = parseInt(Seed.buildings[city].pos1[1]);
    	var WallSpace = 0;
    	for (var b = 1; b < (wall + 1); b++) {WallSpace += (b * 1000)};
    	max = WallSpace/2/1 - (parseInt(Seed.fortifications[city]["fort60"])*4) - (parseInt(Seed.fortifications[city]["fort61"])*1) - (parseInt(Seed.fortifications[city]["fort62"])*3);
    	m+= '<TD width=79 style="background:#FFFFFF">'+Seed.fortifications[city]["fort61"];
    	if (wall >=1 && metalalloys >=1 && max>0) m+= '<br>Left: ' + max+'</td>';
    	else if (t.showReq){
    			if (wall < 1) m+= '<br><FONT COLOR= "CC0000">Wall: ' + wall + '(1)</font>';
    			if (metalalloys < 1) m+= '<br><FONT COLOR= "CC0000">Metal.: ' + metalalloys + '(1)</font>';
    			m+='</td>';
    	} 	
    }
    m+='</tr><TR valign=top align=right><TD style="background-color:'+Colors.OverviewDarkRow+';">'+uW.fortcost['frt62'][0]+'</td>';
    for (i=0;i<Seed.cities.length;i++){
    	city = 'city'+Seed.cities[i][0];
    	for (y in Seed.buildings[city]) {
    		if (Seed.buildings[city][y][0] == 15) blacksmith = Seed.buildings[city][y][1]; 
    	}
    	wall = parseInt(Seed.buildings[city].pos1[1]);
    	var WallSpace = 0;
    	for (var b = 1; b < (wall + 1); b++) {WallSpace += (b * 1000)};
    	max = (WallSpace/2/3).toFixed(0) - (parseInt(Seed.fortifications[city]["fort60"])*4) - (parseInt(Seed.fortifications[city]["fort61"])*1) - (parseInt(Seed.fortifications[city]["fort62"])*3);
    	m+=  '<TD width=79 style="background:#FFFFFF">'+Seed.fortifications[city]["fort62"];
    	if (wall >=2 && blacksmith>=2 && logging>=2 && max>0) m+= '<br>Left: ' + max+'</td>';
    	else if (t.showReq){
    			if (wall < 2) m+= '<br><FONT COLOR= "CC0000">Wall: ' + wall + '(2)</font>';
    			if (blacksmith < 2) m+= '<br><FONT COLOR= "CC0000">BlackS.: ' + blacksmith + '(2)</font>';
    			if (logging < 2) m+= '<br><FONT COLOR= "CC0000">Logg.: ' + logging + '(2)</font>';
    			m+='</td>';
    	} 	
    }
    m+='<TR valign=top align=right><TD width=85 style="background-color:'+Colors.OverviewDarkRow+';">Field defences</td>';
    for (i=0;i<Seed.cities.length;i++){
    	city = 'city'+Seed.cities[i][0];
    	wall = parseInt(Seed.buildings[city].pos1[1]);
    	build = (parseInt(Seed.fortifications[city]["fort60"])*4)+ (parseInt(Seed.fortifications[city]["fort61"])*1) + (parseInt(Seed.fortifications[city]["fort62"])*3);
    	var WallSpace = 0;
    	for (var b = 1; b < (wall + 1); b++) {WallSpace += (b * 1000)};
    	max = WallSpace/2;
    	if (build < max) m+='<TD width=79 style="background:#FFFFFF"><FONT COLOR= "CC0000">';
    	else m+='<TD width=79 style="background:#FFFFFF"><FONT COLOR= "669900">';
    	m+= build+'</font>';
    	m+= '/' + max +'</td>';
    }
    m+='</tr><TR><TD colspan="8" style="background: #FFFFFF; border:none">&nbsp;</td></tr>';
    m+='<TR valign=top align=right><TD width=85 style="background-color:'+Colors.OverviewDarkRow+';">City space</td>';
    
    for(i=0; i<Seed.cities.length; i++) {
    	var count=0;
    	city = 'city'+Seed.cities[i][0];
    	for (y in Seed.buildings[city]) {
    		if (Seed.buildings[city][y][0] >=5 && Seed.buildings[city][y][0] <=21 && Seed.buildings[city][y][0] !=19) count++;
    	}
    	if (count == 31) m+='<TD width=79 style="background:#FFFFFF"><FONT COLOR= "669900">';
    	else m+='<TD width=79 style="background:#FFFFFF"><FONT COLOR= "CC0000">';
    	m+= count + '</font> (31)</td>';
    }
    m+='</tr>';
    m+='<TR valign=top align=right><TD width=85 style="background-color:'+Colors.OverviewDarkRow+';">Field space</td>';
    
    for(i=0; i<Seed.cities.length; i++) {
    	var count=0;
    	var castle=0;
    	city = 'city'+Seed.cities[i][0];
    	for (y in Seed.buildings[city]) {
    		if (Seed.buildings[city][y][0] == 0) castle = Seed.buildings[city][y][1];
    		if (Seed.buildings[city][y][0] >=1 && Seed.buildings[city][y][0] <=4) count++;
    	}
    	if (count == FieldSpace[castle]) m+='<TD width=79 style="background:#FFFFFF"><FONT COLOR= "669900">';
    	else m+='<TD width=79 style="background:#FFFFFF"><FONT COLOR= "CC0000">';
    	m+= count + '</font> ('+FieldSpace[castle]+')</td>';
    }
    m+='</tr>';
    for (b=0;b<=21;b++){
    	m+='<TR valign=top align=right><TD width=85 style="background-color:'+Colors.OverviewDarkRow+';">'+uW.buildingcost['bdg' + b][0]+'</td>';
        for (c=0;c<Seed.cities.length;c++){
        	m+='<TD style="width:79px; max-width:79px; word-wrap: break-word; background:#FFFFFF">';
        		city= 'city'+Seed.cities[c][0];
        		var count =0;
        		for (y in Seed.buildings[city]) {
        			if (Seed.buildings[city][y][0] == b) {
        				count++;
        				if (count > 1) m+=",";
        				if (Seed.buildings[city][y][1] >= 9) m+='<FONT COLOR= "669900">';
        				m+=Seed.buildings[city][y][1];
        				if (Seed.buildings[city][y][1] >= 9) m+='</font>';
        				
        			}
        		}
        		if (count == 0) {
        			m+='<FONT COLOR= "CC0000">0</font>';
        		}
        	m+='</td>';		
        }
        m+='</tr>';
    } 
    m+='</tr><TR><TD colspan="8" style="background: #FFFFFF; border:none">&nbsp;</td></tr>';
    for(i=0; i<Cities.numCities; i++) {
    }
    m+='<TR valign=top align=right><TD width=85 style="background-color:'+Colors.OverviewDarkRow+';">Guardians</td>';
    for(i=0; i<Seed.cities.length; i++) {
     	for(g=0;g<Seed.guardian.length;g++) {
     		if (Seed.guardian[g]['cityId'] == Seed.cities[i][0] && Seed.guardian[g]['level']!=0) {
     			m += '<TD width=79 style="background:#FFFFFF">';
     			if (Seed.guardian[g]['level'] >=9) m+='<FONT COLOR= "669900">'; 
     			m+=Seed.guardian[g]['level']+"("+Seed.guardian[g]['type']+")</td>";
     			if (Seed.guardian[g]['level'] >=9) m+='</font>'; 
     		}
     		else {if (Seed.guardian[g]['cityId'] == Seed.cities[i][0] && Seed.guardian[g]['level']==0) m += '<TD width=79 style="background:#FFFFFF"><FONT COLOR= "CC0000">0</font></td>'};
    	}
    }
    m+='</tr></table><BR></table><BR><TABLE class=ptBuilds  border=1px cellpadding=2 cellspacing=0><TR valign=top align=left>';
    for (i in uW.techcost) {
    	m+='<TD border=1px style="width:150px; background:#FFFFFF">'+uW.techcost[i][0]+'</td><TD align=center style="width:50px max-width:150px; background:#FFFFFF;">';
    	if (Seed.tech[i] >=9) m+='<FONT COLOR= "669900">';
    	if (Seed.tech[i] ==0) m+='<FONT COLOR= "CC0000">';
    	m+=Seed.tech[i];
    	if (Seed.tech[i] >=9 || Seed.tech[i] ==0) m+='</font>';
    	if (t.showReq) {
    		for(z=0; z<Seed.cities.length; z++) {
        		city = 'city'+Seed.cities[z][0];
        		for (y in Seed.buildings[city]) {
        			var farm,sawmill,quarry,mine,alchemylab,workshop,blacksmith,stable,storehouse,barracks = 0;
        			if (Seed.buildings[city][y][0] == 1 && Seed.buildings[city][y][0] > farm) farm = Seed.buildings[city][y][1]; 
        			if (Seed.buildings[city][y][0] == 2 && Seed.buildings[city][y][0] > sawmill) sawmill = Seed.buildings[city][y][1];
        			if (Seed.buildings[city][y][0] == 3 && Seed.buildings[city][y][0] > quarry) quarry = Seed.buildings[city][y][1]; 
        			if (Seed.buildings[city][y][0] == 4 && Seed.buildings[city][y][0] > mine) mine = Seed.buildings[city][y][1];
        			if (Seed.buildings[city][y][0] == 9) storehouse = Seed.buildings[city][y][1];
        			if (Seed.buildings[city][y][0] == 11) alchemylab = Seed.buildings[city][y][1];
        			if (Seed.buildings[city][y][0] == 13 && Seed.buildings[city][y][0] > barracks) barracks = Seed.buildings[city][y][1];
        			if (Seed.buildings[city][y][0] == 15) blacksmith = Seed.buildings[city][y][1];
        			if (Seed.buildings[city][y][0] == 16) workshop = Seed.buildings[city][y][1];
        			if (Seed.buildings[city][y][0] == 17) stable = Seed.buildings[city][y][1];
        		}
        	}
        	m+='<FONT COLOR= "CC0000">';
    		switch (i) {
    			case '1': 
    				if (alchemylab < Seed.tech[i]) m+='<BR>Alchemy Lab '+ alchemylab+ '('+ (Seed.tech[i]) +')';
    				if (farm < Seed.tech[i]) m+='<BR>Farm '+ farm +'('+ (Seed.tech[i]+1) +')</td>';
    				break;
    			case '2': 
    				if (alchemylab < Seed.tech[i]) m+='<BR>Alchemy Lab '+ alchemylab+ '('+ (Seed.tech[i]) +')';
    				if (sawmill < Seed.tech[i]) m+='<BR>Sawmill '+ sawmill +'('+ (Seed.tech[i]) +')';
    				break;
    			case '3': 
    				if (alchemylab < Seed.tech[i]) m+='<BR>Alchemy Lab '+ alchemylab+ '('+ (Seed.tech[i]) +')';
    				if (quarry < Seed.tech[i]) m+='<BR>Quarry '+ quarry +'('+ (Seed.tech[i]) +')</td>';
    				break;
    			case '4': 
    				if (alchemylab < Seed.tech[i]) m+='<BR>Alchemy Lab '+ alchemylab+ '('+ (Seed.tech[i]) +')';
    				if (mine < Seed.tech[i]) m+='<BR>Mine '+ mine +'('+ (Seed.tech[i]) +')';
    				break;
    			case '5': 
    				if (alchemylab < 3) m+='<BR>Alchemy Lab '+ alchemylab +'(3)';
    				if (alchemylab >= 3 && alchemylab < Seed.tech[i]) m+='<BR>Alchemy Lab '+ alchemylab +'('+ (Seed.tech[i]) +')';
    				if (workshop < Seed.tech[i]) m+='<BR>Workshop ' + workshop +'('+ (Seed.tech[i]) +')';
    				if (stoneworking < 2) m+='<BR>Stoneworking '+ stoneworking +'(2)';
    				break;
    			case '6': 
    				if (alchemylab < 3) m+='<BR>Alchemy Lab '+ alchemylab +'(3)';
    				if (alchemylab >= 3 && alchemylab < Seed.tech[i]) m+='<BR>Alchemy Lab '+ alchemylab +'('+ (Seed.tech[i]) +')';
    				break;	
    			case '8': 
    				if (alchemylab < 2) m+='<BR>Alchemy Lab '+ alchemylab +'(2)';
    				if (alchemylab >= 2 && alchemylab < Seed.tech[i]) m+='<BR>Alchemy Lab '+ alchemylab +'('+ (Seed.tech[i]) +')';
    				if (barracks < 2) m+='<BR>Barracks '+ barracks +'(2)';
    				break;		
    			case '9': 
    				if (alchemylab < 3) m+='<BR>Alchemy Lab '+ alchemylab +'(3)';
    				if (alchemylab >= 3 && alchemylab < Seed.tech[i]) m+='<BR>Alchemy Lab '+ alchemylab +'('+ (Seed.tech[i]) +')';
    				if (blacksmith < Seed.tech[i]) m+='<BR>Blacksmith '+ blacksmith+'('+ (Seed.tech[i]) +')';
    				if (mining < Seed.tech[i]) m+='<BR>Mining '+ mining +'('+ (Seed.tech[i]) +')';
    				break;
    			case '10': 
    				if (alchemylab < 4) m+='<BR>Alchemy Lab '+ alchemylab +'(4)';
    				if (alchemylab >= 4 && alchemylab < Seed.tech[i]) m+='<BR>Alchemy Lab '+ alchemylab +'('+ (Seed.tech[i]) +')';
    				break;
    			case '11': 
    				if (alchemylab < 4) m+='<BR>Alchemy Lab '+ alchemylab +'(4)';
    				if (alchemylab >= 4 && alchemylab < Seed.tech[i]) m+='<BR>Alchemy Lab '+ alchemylab +'('+ (Seed.tech[i]) +')';
    				break;
    			case '12': 
    				if (alchemylab < 5) m+='<BR>Alchemy Lab '+ alchemylab +'(5)';
    				if (alchemylab >= 5 && alchemylab < Seed.tech[i]) m+='<BR>Alchemy Lab '+ alchemylab +'('+ (Seed.tech[i]) +')';
    				if (stable < Seed.tech[i]) m+='<BR>Stable '+ stable +'('+ (Seed.tech[i]+1) +')';
    				if (metalalloys < Seed.tech[i]) m+='<BR>Metal Alloys '+ metalalloys +'('+ (Seed.tech[i]+1) +')';
    				break;
    			case '13': 
    				if (alchemylab < 4) m+='<BR>Alchemy Lab '+ alchemylab +'(4)';
    				if (alchemylab >= 4 && alchemylab < Seed.tech[i]) m+='<BR>Alchemy Lab '+ alchemylab +'('+ (Seed.tech[i]) +')';
    				if (logging < 4) m+='<BR>Logging '+ logging +'(4)';
    				break;
    			case '14': 
    				if (alchemylab < 6) m+='<BR>Alchemy Lab '+ alchemylab +'(6)';
    				if (alchemylab >= 6 && alchemylab < Seed.tech[i]) m+='<BR>Alchemy Lab '+ alchemylab +'('+ (Seed.tech[i]) +')';
    				if (storehouse < Seed.tech[i]) m+='<BR>Storehouse '+ storehouse +'('+ (Seed.tech[i]) +')';
    				if (logging < 3) m+='<BR>Logging '+ logging+'(3)';
    				break;
    			case '15': 
    				if (alchemylab < 6) m+='<BR>Alchemy Lab '+ alchemylab +'(6)';
    				if (alchemylab >= 6 && alchemylab < Seed.tech[i]) m+='<BR>Alchemy Lab '+ alchemylab +'('+ (Seed.tech[i]) +')';
    				if (featherweightpowder  < 3) m+='<BR>Featherweight Powder  '+ featherweightpowder +'(3)';
    				break;
    			case '16': 
    				if (alchemylab < 5) m+='<BR>Alchemy Lab '+ alchemylab +'(5)';
    				if (alchemylab >= 5 && alchemylab < Seed.tech[i]) m+='<BR>Alchemy Lab '+ alchemylab +'('+ (Seed.tech[i]) +')';
    				if (logging  < 5) m+='<BR>Logging '+ logging +'(5)';
    				if (geometry  < 2) m+='<BR>Geometry  '+ geometry +'(2)';
    				break;
    		}
    		m+='</font>';
    	}
    	m+='</td></tr>';
    }	
    m+='</table></div>';
    t.Overv.innerHTML = m;
    document.getElementById('showReq').addEventListener ('change', function (){
    	t.showReq = document.getElementById('showReq').checked;
    	t.showBuilds();
    },false);	
    t.displayTimer = setTimeout (t.showBuilds, 1000);
  },
  
  showInfo : function (){
      var t = Tabs.OverView;
      t.Overv.innerHTML = null;
      t.Overv.style.maxHeight = '650px';
      t.Overv.style.overflowY = 'scroll';
	  t.Overv.style.maxWidth = '745px';
      t.Overv.style.overflowX = 'scroll';
      clearTimeout (t.displayTimer);	
      
	  //Useful links
	  var u='<DIV class=ptstat>USEFULL LINKS</div><DIV id=ptLinks><TABLE align=center cellpadding=1 cellspacing=0><TR>';
	  u+='<TD width="300px" ; border:none">Scripts</td><TD width="300px" ; border:none">Information sites</td></tr>';
	  u+='<TR><TD width="300px" ; border:none"><a href="http://userscripts.org/scripts/show/103659" target="_blank">Power Tools (Koc Scripters)</a></td>';
	  u+='<TD width="300px" ; border:none"><a href="http://koctools.com/index.php?pageid=servers" target="_blank">KOCTools</a></td></tr>';
	  u+='<TR><TD width="100px" ; border:none"><a href="http://code.google.com/p/koc-power-tools/wiki/Home?tm=6" target="_blank">Power Tools WIKI</a></td>';
	  u+='<TD width="300px" ; border:none"><a href="http://koc.dunno.com/index.sjs?f=ListServers" target="_blank">KOC Mapper</a></td></tr>';
	  u+='<TR><TD width="100px" ; border:none"><a href="http://userscripts.org/scripts/show/101052" target="_blank">Power Bot (Koc Scripters)</a></td>';
	  u+='<TD width="300px" ; border:none"><a href="http://kocmon.com/" target="_blank">KoC Monitor</a></td></tr>';
	  u+='<TR><TD width="100px" ; border:none"><a href="http://code.google.com/p/koc-power-bot/wiki/Home?tm=6" target="_blank">Power Bot WIKI</a></td>';
	  u+='<TD width="300px" ; border:none"><a href="http://koc.wikia.com/wiki/" target="_blank">Koc Wikia</a></td></tr>';
	  u+='<TR><TD width="100px" ; border:none"><a href="https://addons.mozilla.org/en/firefox/addon/greasemonkey/" target="_blank">Greasemonkey</a></td><TD width="100px" ; border:none"></td>';
	  u+='<TR><TD width="100px" ; border:none"><a href="https://addons.mozilla.org/en/firefox/addon/scriptish/" target="_blank">Scriptish</a></td><TD width="100px" ; border:none"></td>';
	  u+='</tr></table></div><BR>';
	  
	  //Crest info
	  var crestreq = { 3:{1101:4, 1102:2, 1103:1},
	  				   4:{1103:4, 1104:3, 1105:1},
	  				   5:{1106:4, 1107:3, 1108:2},
	  				   6:{1109:4, 1110:3, 1111:2},
	  				   7:{1112:4, 1113:3, 1114:2},
					   8:{1115:4, 1120:3, 1121:2}};
	  				
	  u+='<DIV class=ptstat>CREST INFO</div><DIV id=ptLinks><TABLE align=center cellpadding=1 cellspacing=0><TR>';
	  for (city in crestreq){
	  		deed = 'q800' + city;
        if (Seed.quests[deed] ==1) u+='<TD width=75px style="background:#CCFFCC">';
        else  u+='<TD width=75px ">';
        u+= uW.g_js_strings.commonstr.city+' '+city+'</td>';
	  		for (crest in crestreq[city]){
	  			owned = Seed.items['i'+crest];
	  			if (Seed.quests[deed] ==1) u+='<TD 200px style="background:#CCFFCC">';
          else  u+='<TD 200px ">';
	  			if (owned == undefined) owned=0;
	  			if (owned < crestreq[city][crest]) u+='<FONT color=red>'+owned+'/'+crestreq[city][crest]+'</font> '+uW.itemlist['i'+crest]['name']+'</td>';
	  				else  u+='<FONT color=green>'+owned+'/'+crestreq[city][crest]+'</font> '+uW.itemlist['i'+crest]['name']+'</td>'; 
	  		}
	  		u+='</tr>';
	  }
	  u+='</table><BR>';
	  //Unit info
	  fortmight = {
	        u53: "4",
	        u55: "7",
	        u60: "1",
	        u61: "2",
	        u62: "3",
	      };
	      rownum = 0;
	      u += '<STYLE>.xtabH {background:#ffffe8; border:none; padding-right: 5px; padding-left: 5px; margin-left:10px; }\
	              .xtabHL { background:#ffffe8; border-width: 1px; border-style: none none none solid; padding-right:5px; padding-left:5px; margin-left:10px; }\
	              .xtabL { background:none; border-width: 1px; border-style: none none none solid; padding-right:5px; padding-left: 5px; margin-left:10px; }\
	              .xtabLine { padding:0px; spacing:0px; height:1px; border-color:black; border-width: 1px; border-style: none none solid none }</style>\
	          <DIV style="overflow-y:auto; overflow-x:hidden"><DIV class=ptstat>UNIT INFORMATION</div><TABLE align=center cellpadding=1 cellspacing=0>\
	          <TR align=center><TD class=xtab></td><TD class=xtabHL colspan=5><B>COST TO BUILD</b></td><TD class=xtabHL colspan=7><B>STATS</b></td><TD class=xtabHL><B>Upkeep</b></td></tr>\
	          <TR valign=bottom align=right><TD class=xtab></td><TD class=xtabHL>Food</td><TD class=xtabH>Wood</td><TD class=xtabH>Stone</td>\
	          <TD class=xtabH>Ore</td><TD class=xtabH>Pop</td><TD class=xtabHL>Might</td><TD class=xtabH>Life</td><TD class=xtabH>Atk</td><TD class=xtabH>Def</td><TD class=xtabH>Speed</td><TD class=xtabH>Range</td><TD class=xtabH>Load</td>\
	          <TD class=xtabHL>Food</td></tr>\
	          <TR style="height:1px;"><TD style="padding:0px; spacing:0px; height:1px; border-color:black; border-width: 1px; border-style: none none solid none" colspan=14></td></tr>';
	      for (ui=1; ui<14; ui++){
	        if (++rownum % 2)
	          rsty = '';
	        else
	          rsty = ' style="background: #e8e8e8" ';
	        cost = uW.unitcost['unt'+ui];     //  NAME, Food, Wood, Stone, Ore, ?, IdlePop, Time
	        stats = uW.unitstats['unt'+ui];   //  Life, Attack, Defense, Speed, Range, Load
	        food = uW.unitupkeeps[ui];
	        might = uW.unitmight['unt'+ui];
	        u += '<TR '+ rsty +'align=right><TD class=xtab align=left><B>'+ cost[0].substr(0,16) +'</b></td><TD class=xtabL>'+ cost[1] +'</td><TD class=xtab>'+ cost[2] +'</td>\
	            <TD class=xtab>'+ cost[3] +'</td><TD class=xtab>'+ cost[4] +'</td><TD class=xtab>'+ cost[6] +'</td><TD class=xtabL>'+ might +'</td>\
	            <TD class=xtab>'+ stats[0] +'</td><TD class=xtab>'+ stats[1] +'</td><TD class=xtab>'+ stats[2] +'</td><TD class=xtab>'+ stats[3] +'</td>\
	            <TD class=xtab>'+ stats[4] +'</td><TD class=xtab>'+ stats[5] +'</td><TD class=xtabL>'+ food +'</td></tr>';
	  
	      }
	      u += '<TR class=xtabLine><TD colspan=14 class=xtabLine></td></tr>';
	      for (k in uW.fortcost){
	        if (++rownum % 2)
	          rsty = '';
	        else
	          rsty = ' style="background: #e8e8e8" ';
	        cost = unsafeWindow.fortcost[k];     //  NAME, Food, Wood, Stone, Ore, ?, IdlePop, Time
	        fi = k.substring(3);
	        stats = unsafeWindow.fortstats['unt'+fi];   //  Life, Attack, Defense, Speed, Range, Load
	        food = 0;
	        might = fortmight['u'+fi];
	        name = cost[0].replace ('Defensive','');
	        name = name.replace ('Wall-Mounted','');
	        u+= '<TR '+ rsty +'align=right><TD align=left class=xtab><B>'+ name +'</b></td><TD class=xtabL>'+ cost[1] +'</td><TD class=xtab>'+ cost[2] +'</td>\
	            <TD class=xtab>'+ cost[3] +'</td><TD class=xtab>'+ cost[4] +'</td><TD class=xtab>'+ cost[6] +'</td><TD class=xtabL>'+ might +'</td>\
	            <TD class=xtab>'+ stats[0] +'</td><TD class=xtab>'+ stats[1] +'</td><TD class=xtab>'+ stats[2] +'</td><TD class=xtab>'+ stats[3] +'</td>\
	            <TD class=xtab>'+ stats[4] +'</td><TD class=xtab>'+ stats[5] +'</td><TD class=xtabL>'+ food +'</td></tr>';
	      }
	      u += '<TR class=xtabLine><TD colspan=14 class=xtabLine></td></tr>';
	      u += '</table></div><BR>';
          //Troop Train Estimates
			function _displayrow (name, row){
                    var tot=0;
      			style = ((rownum++ % 2)?'':' style = "background: #e8e8e8"');
      			u += '<TR' + style + '><TD align=right><B>' + name + '</B></td>';
      			for (i=0; i<row.length; i++) {
      				u += ((row[i]==0)?'<td align=right><SPAN class=boldRed>0</SPAN></td>':'<td align=right>'+addCommas(parseInt(row[i]))+'</td>');
      				tot+=parseInt(row[i]);
      				}
      			u += '<td align=right>'+addCommas(tot)+'</td></tr>';
      		}
		  u += '<DIV class=ptstat>TROOP TRAIN TIMES ESTIMATES</div><TABLE align=center cellpadding=1 cellspacing=0><TR align=right><TD></td>';
	      infoRows = [];
      		for (r=0; r<25; r++)
      			infoRows[r] = [];
      		for(i=0; i<Cities.numCities; i++) {
      			cityID = 'city'+ Cities.cities[i].id;
      			u += "<TD align=center valign=bottom width=60px><B>" + Cities.cities[i].name.substr(0,10)  + "</B></TD>";
      			// getTroopDefTrainEstimates(cityID);
      			infoRows[0][i] = Cities.cities[i].numCottages;
      			infoRows[1][i] = Cities.cities[i].numBarracks;
      			infoRows[2][i] = Cities.cities[i].foremanBasePoliticsScore;
      			infoRows[3][i] = Cities.cities[i].marshallCombatScore;
      			infoRows[5][i] = Cities.cities[i].stableLevel;
      			infoRows[6][i] = Cities.cities[i].workshopLevel;
      			for (var j=1; j<14; j++)
      				infoRows[j+6][i] = ((Cities.cities[i]['Troop'+j+'Time'] > 0)?(3600 / Cities.cities[i]['Troop'+j+'Time']):0);
      			infoRows[20][i] = Cities.cities[i]['Def53Time'];
      			if (infoRows[20][i] > 0)
      				infoRows[20][i] = 3600 / infoRows[19][i];
      			infoRows[21][i] = Cities.cities[i]['Def55Time'];
      			if (infoRows[21][i] > 0)
      				infoRows[21][i] = 3600 / infoRows[20][i];
      			infoRows[22][i] = Cities.cities[i]['Def60Time'];
      			if (infoRows[22][i] > 0)
      				infoRows[22][i] = 3600 / infoRows[21][i];
      			infoRows[23][i] = Cities.cities[i]['Def61Time'];
      			if (infoRows[23][i] > 0)
      				infoRows[23][i] = 3600 / infoRows[22][i];
      			infoRows[24][i] = Cities.cities[i]['Def62Time'];
      			if (infoRows[24][i] > 0)
      				infoRows[24][i] = 3600 / infoRows[23][i];
      		}
      		u += "<td align=center valign=bottom width=60px><b>Total</td></tr>";
      		 var rownum = 0;
      		_displayrow ("Cottages Total", infoRows[0]);
      		_displayrow ("Barracks Total", infoRows[1]);
      		_displayrow ("Foreman Politics", infoRows[2]);
      		_displayrow ("Marshall Combat", infoRows[3]);
      		_displayrow ("Stable Lvl", infoRows[5]);
      		_displayrow ("Workshop Lvl", infoRows[6]);
      		u += "<TR><TD></TD><TD nowrap align=center colspan="+(Cities.numCities)+"><B>Troop Hourly Production</B></TD></TR>";
      		_displayrow ("STroop", infoRows[7]);
      		_displayrow ("Militia", infoRows[8]);
      		_displayrow ("Scout", infoRows[9]);
      		_displayrow ("Pike", infoRows[10]);
      		_displayrow ("Sword", infoRows[11]);
      		_displayrow ("Archer", infoRows[12]);
      		_displayrow ("Cavalry", infoRows[13]);
      		_displayrow ("HCavalry", infoRows[14]);
      		_displayrow ("Wagon", infoRows[15]);
      		_displayrow ("Balista", infoRows[16]);
      		_displayrow ("Ram", infoRows[17]);
      		_displayrow ("Catapult", infoRows[18]);
      		_displayrow ("Bloodthorn", infoRows[19]);
      		u += "<TR><TD></TD><TD nowrap align=center colspan="+(Cities.numCities)+"><B>Wall Defense Hourly Production</B></TD></TR>";
      		_displayrow ("XBow", infoRows[20]);
      		_displayrow ("Trebuchet", infoRows[21]);
      		_displayrow ("Spike", infoRows[22]);
      		_displayrow ("Trap", infoRows[23]);
      		_displayrow ("Caltrop", infoRows[24]);
		  u += '</tr></table>';
	      u += '<DIV class=ptstat>MISC INFO</div><TABLE><TR><TD width="200px" style="background-color:#FFFFFF; border:none">KofC client version: '+ KOCversion +'</td>';
	      u += '<TD style="background-color:#FFFFFF; border:none"><INPUT id=ptButDebug type=submit name="SEED" value="DEBUG"></tr></td></table></div>';
		
      t.Overv.innerHTML = u;   
      document.getElementById('ptButDebug').addEventListener('click', function (){debugWin.doit()}, false);  
  },      

  paintOld : function (){
    var rownum = 0;
    var t = Tabs.OverView;
    
    clearTimeout (Tabs.OverView.displayTimer);
    t.Overv.innerHTML = null;
    t.Overv.style.maxHeight = '650px';
    t.Overv.style.overflowX = Options.overviewAllowOverflow?'visible':'scroll';
	t.Overv.style.width = Options.overviewAllowOverflow?'':'745px';
	t.Overv.style.maxWidth = Options.overviewAllowOverflow?'':'745px';
    function _row (name, row, noTotal){
      var t = Tabs.OverView;
      if (rownum++ % 2)
        style = '';
      else
        style = ' style = "background: #e8e8e8"';
      var tot = 0;
      var m = [];
      m.push ('<TR style="background: #fff" align=right');
      m.push (style);
      m.push ('><TD');
      m.push (style);
      m.push ('><B>');
      m.push (name);
      m.push (' &nbsp; </td>');
      if (noTotal){
        m.push ('<TD');
        m.push (style);
        m.push ('> &nbsp;</td>');
      } else {
        for (i=0; i<row.length; i++)
          tot += row[i];
        m.push ('<TD style="background: #ffc">');
      if (TEST_WIDE)
          m.push ('X,');        
        m.push (addCommas(tot));
        m.push ('</td>');
      }
      for (i=0; i<row.length; i++){
        m.push ('<TD');
        m.push (style);
        m.push ('>');
      if (TEST_WIDE)
         m.push ('X,');        
        m.push (addCommas(row[i]));
        m.push ('</td>');
      }
      m.push ('</tr>');
      return m.join('');
    }
    
    //DebugTimer.start(); 
    try {
      if (Options.includeMarching)
        march = getMarchInfo ();
      if (Options.includeTrainingExt)
        train = getTrainInfo ();

      dt = new Date ();
      dt.setTime (Seed.player.datejoinUnixTime * 1000);
              
      str = "<DIV id=overMainDiv style='font-size:"+ Options.overviewFontSize +"px'><TABLE class=ptTabOverview cellpadding=0 cellspacing=0><TR valign=top align=right><TD width=65></td><TD width=88 style='background: #ffc'><B>TOTAL</b></td>";
      for(i=0; i<Cities.numCities; i++) {
        str += "<TD width=81><B>"+ Cities.cities[i].name.substring(0,11) +'</b><BR>'+ coordLink (Cities.cities[i].x, Cities.cities[i].y) +"<BR>"+ unsafeWindow.provincenames['p'+ Cities.cities[i].provId] +"</td>";
      }
      if (Options.includeMarching)
        str += '<TD width=81><B>Marching</b></td>';
      if (Options.includeTrainingExt)
        str += '<TD width=81><B>Training</b></td>';
      str += "</tr>";
  
    str += '<TR valign=top align=right><TD></td><TD style=\'background: #ffc\'></td>';
    for(i=0; i<Cities.numCities; i++){
      cityID = 'city'+Cities.cities[i].id;
      Gate = parseInt(Seed.citystats[cityID].gate);
    if(Gate == 0)
      str += '<TD>Hiding</td>';
    else
      str += '<TD><SPAN class=boldRed>Defending</span></td>';
    }

      rows = [];
      rows[0] = [];
      for(i=0; i<Cities.numCities; i++) {
        cityID = 'city'+ Cities.cities[i].id;
        rows[0][i] = parseInt(Seed.citystats[cityID].gold[0]);
      }
      for (r=1; r<5; r++){
        rows[r] = [];
        for(i=0; i<Cities.numCities; i++) {
          cityID = 'city'+ Cities.cities[i].id;
          rows[r][i] = parseInt(Seed.resources[cityID]['rec'+r][0] / 3600);
        }
      }
	  rows[5] = [];
	  for(i=0; i<Cities.numCities; i++) { //Aetherstone
        cityID = 'city'+ Cities.cities[i].id;
        rows[5][i] = parseInt(Seed.resources[cityID]['rec5'][0]);
      }
  
      if (Options.includeMarching){
        for (var i=0; i<5; i++)
          rows[i][Cities.numCities] = march.resources[i]; //Aetherstone does not show up in march info
      }
      str += _row ('Gold', rows[0]);
      str += _row ('Food', rows[1]);
      str += _row ('Wood', rows[2]);
      str += _row ('Stone', rows[3]);
      str += _row ('Ore', rows[4]);
      str += _row ('Aetherstone', rows[5]);
      str += '<TR><TD colspan=11><BR></td></tr>';
      for (r=1; r<14; r++){
        rows[r] = [];
        for(i=0; i<Cities.numCities; i++) {
          cityID = 'city'+ Cities.cities[i].id;
          rows[r][i] = parseIntNan(Seed.units[cityID]['unt'+r]);
        }
      }
	  
	  var colnum = Cities.numCities;
      if (Options.includeMarching){
        for (var i=0; i<14; i++){
          rows[i][colnum] = parseIntNan(march.marchUnits[i]);
		}
		colnum++;
      }
	  if(Options.includeTrainingExt){
		for (var i=0; i<14; i++){
		  rows[i][colnum] = parseIntNan(train.trainUnts[i]);
		}
	  }
      if (Options.includeTraining){
        var q = Seed.queue_unt;
        for(i=0; i<Cities.numCities; i++) {
          q = Seed.queue_unt['city'+ Cities.cities[i].id];
          if (q && q.length>0){
            for (qi=0; qi<q.length; qi++)
              rows[q[qi][0]][i] += parseIntNan(q[qi][1]);
          }    
        }
      }
      rownum = 0;
      str += _row ('SupTrp', rows[1]);
      str += _row ('Militia', rows[2]);
      str += _row ('Scout', rows[3]);
      str += _row ('Pike', rows[4]);
      str += _row ('Sword', rows[5]);
      str += _row ('Archer', rows[6]);
      str += _row ('Cavalry', rows[7]);
      str += _row ('Heavy', rows[8]);
      str += _row ('Wagon', rows[9]);
      str += _row ('Ballista', rows[10]);
      str += _row ('Ram', rows[11]);
      str += _row ('Catapult', rows[12]);
      str += _row ('Bloodthorn', rows[13]);
      str += '<TR><TD colspan=11><BR></td></tr>';
      
      row = [];
      for(i=0; i<Cities.numCities; i++) {
        var rp = getResourceProduction (Cities.cities[i].id);
        var usage = parseInt(Seed.resources["city" + Cities.cities[i].id]['rec1'][3]);
        row[i] = rp[1] - usage;
      }
     
      str += _row ('Food +/-', row, true);
      
      for(i=0; i<Cities.numCities; i++) {
        if (row[i] >= 0)
          row[i] = '----';
        else {
          var timeLeft = parseInt(Seed.resources["city" + Cities.cities[i].id]['rec1'][0]) / 3600 / (0-row[i]) * 3600;
          if (timeLeft > 86313600)
            row[i] = '----';
          else {
            if (Options.enableFoodWarn && timeLeft<(Options.foodWarnHours*3600))
              row[i] = '<SPAN class=whiteOnRed>'+ timestrShort(timeLeft) +'</span>';
            else
              row[i] = timestrShort(timeLeft);
          }
        }
      }    
      str += _row ('Food left', row, true);
      str += '<TR><TD><BR></td></tr>';
      
      row = [];
      for(i=0; i<Cities.numCities; i++) {
        var totWilds = 0;
        dat = Seed.wilderness['city'+ Cities.cities[i].id];
        if (dat!=null && matTypeof(dat)=='object')
          for (k in dat)
            ++totWilds;
        var castle = parseInt(Seed.buildings['city'+ Cities.cities[i].id].pos0[1]);
       if(castle == 11) castle = 12;
       else if(castle == 12) castle = 14;
        if (totWilds < castle)
          row[i] = '<SPAN class=boldRed><B>'+ totWilds +'/'+ castle +'</b></span>';
        else
          row[i] = totWilds +'/'+ castle;
      }
      str += _row ('#Wilds', row, true);
  
      row = [];
      for(i=0; i<Cities.numCities; i++) {
        totKnights = 0;
        dat = Seed.knights['city'+ Cities.cities[i].id];
        for (k in dat)
          ++totKnights;
        row[i] = totKnights;
      }
      str += _row ('#Knights', row, true);
  
      var now = unixTime();
      var row = [];
      for(i=0; i<Cities.numCities; i++) {
        var totTime = 0;
        var q = Seed.queue_unt['city'+Cities.cities[i].id]; 
        if (q!=null && q.length>0)
          totTime = q[q.length-1][3] - now;
        if (totTime < 0)
          totTime = 0;
        if (totTime < 3600)
          row[i] = '<SPAN class=boldRed><B>'+ timestr(totTime) +'</b></span>';
        else
          row[i] = timestr(totTime);
      }
      str += _row ('TroopQ', row, true);
      
      var row = [];
      for(i=0; i<Cities.numCities; i++) {
        var wall = {};
        getWallInfo (Cities.cities[i].id, wall);
        var totTime = 0;
        var q = Seed.queue_fort['city'+Cities.cities[i].id]; 
        if (q!=null && q.length>0)
          totTime = q[q.length-1][3] - now;
        if (totTime < 0)
          totTime = 0;
        if (totTime<1 && (wall.wallSpaceUsed < wall.wallSpace-4 || wall.fieldSpaceUsed < wall.fieldSpace-4))
          row[i] = '<SPAN class=boldRed><B>'+ timestr(totTime) +'</b></span>';
        else
          row[i] = timestr(totTime);
      }    
      str += _row ('WallQue', row, true);
      str += '<TR><TD class=xtab></td><TD class=xtab colspan=4><BR><INPUT type=CHECKBOX id=idCheck'+ (Options.includeMarching?' CHECKED':'') +'>Include Marching Troops/Resources</td></tr>';
      str += '<TR><TD class=xtab></td><TD class=xtab colspan=4><INPUT type=CHECKBOX id=ptoverIncTrain'+ (Options.includeTraining?' CHECKED':'') +'>Include troops in training in cities</td></tr>';
      str += '<TR><TD class=xtab></td><TD class=xtab colspan=4><INPUT type=CHECKBOX id=ptoverIncTrainExt'+ (Options.includeTrainingExt?' CHECKED':'') +'>Include troops in training total</td></tr>';
      str += '<TR><TD class=xtab></td><TD class=xtab colspan=4><INPUT type=CHECKBOX id=ptOverOver'+ (Options.overviewAllowOverflow?' CHECKED':'') +'>Allow width overflow \
         &nbsp; &nbsp; FONT SIZE: '+ htmlSelector ({9:9, 10:10, 11:11, 12:12}, Options.overviewFontSize, 'id=ptoverfont') +'</td></tr><BR>';
      str += "</table></div>";
      str+= 'Koc Power Tools Version oz:' + Version;
      t.Overv.innerHTML = str;
      document.getElementById('idCheck').addEventListener('click', e_clickEnableMarch, false);
      document.getElementById('ptoverIncTrain').addEventListener('click', e_clickEnableTraining, false);
      document.getElementById('ptoverIncTrainExt').addEventListener('click', e_clickEnableTrainingExt, false);
      document.getElementById('ptOverOver').addEventListener('click', e_allowWidthOverflow, false);
      document.getElementById('ptoverfont').addEventListener('change', e_fontSize, false);
    //DebugTimer.display ('Draw Overview');    
    } catch (e){
      t.Overv.innerHTML = '<PRE>'+ e.name +' : '+ e.message +'</pre>';
    }   
    t.displayTimer = setTimeout (t.paintOld, 5000);	

    function e_clickEnableMarch (){
      var t = Tabs.OverView;
      Options.includeMarching = document.getElementById('idCheck').checked;
      t.paintOld ();
    }
    function e_clickEnableTraining (){
      var t = Tabs.OverView;
      Options.includeTraining = document.getElementById('ptoverIncTrain').checked;
      t.paintOld ();
    }
    function e_clickEnableTrainingExt (){
      var t = Tabs.OverView;
      Options.includeTrainingExt = document.getElementById('ptoverIncTrainExt').checked;
      t.paintOld ();
    }

    function e_fontSize(evt){
      document.getElementById('ptOverOutput').style.fontSize = evt.target.value +'px'; 
      Options.overviewFontSize = evt.target.value;
      t.paintOld ();
    }

    function e_allowWidthOverflow (evt){
      var t = Tabs.OverView;
      var tf = document.getElementById('ptOverOver').checked;
      Options.overviewAllowOverflow = tf;
      if (tf)
        t.Overv.style.overflowX = 'visible';
      else
        t.Overv.style.overflowX = 'auto';
      t.paintOld ();
    }
  },
};

/*************** March Tab **********/
Tabs.Attaque = {
 cont : null,
 displayTimer : null,
 tabLabel : 'March',
 state : null,
 curTabBut : null,
 curTabName : null,
 BOAttackTimer: null,
 sourceCity : {},
 destinationCity : {},
 rows : [],
 iused : new Array(),
 init : function (div){
   var t = Tabs.Attaque;
   t.cont = div;
   t.state = null;
   clearTimeout (t.displayTimer);
 },
  getContent : function (){
    var t = Tabs.Attaque;
    return t.cont;
  },
  hide : function (){
    var t = Tabs.Attaque;
    t.state = null;
    clearTimeout (t.displayTimer);
  },
  show : function (){  
    var t = Tabs.Attaque;
    var rownum = 0;
    var ModelCity = {};
    if (t.state == null) {  
         m = "<DIV class=ptstat><b>QUICK MARCH TOOL</b></div>";
         m +="<div id='statpourRAA'></div>";       
         m += "<TABLE width=600 class=ptTab border=0 align=center>\
           <tr><td><INPUT type=checkbox id=ptmarch_autoknight "+(Options.marchautoknight?'CHECKED':'')+" /> Auto select knight</td></tr>\
           <tr><td colspan=4 align=center><input type=button id=REEaction value='Scout'>&nbsp;<input type=button id=RAAaction value='Attack'>&nbsp<input type=button id=RARaction value='Reassign'>&nbsp;<input type=button id=RENaction value='Reinforce'>&nbsp;<input type=button id=RENBaction value='Reinforce + Max Food'></td></tr><tr align=center valign=top><td width=130><b><u>Source</b></u><br><span id=RAAsrcRptspeedcity></span></td>\
           <td><b><u>Destination</b></u><br>X:<input type=text id=RAAtypetrpx size=3>&nbsp;Y:<input type=text id=RAAtypetrpy size=3><br><a href='javascript:void(0);' id='BOchargelistelieux'>Fetch Members</a> : <select id='listeFavori'></select></td>\
           <td><b><u>Distance</u></b><br><span id='BOEstimationD'>&nbsp;</span><td><b><u>Closest City</u></b><br><span id=BOVilleProche></span>\
           </tr><tr align=center valign=top>\
           <td colspan=4 align=left><table border=0 bordercolor=black cellspacing=0 cellpadding=0 width=100% style='text-align:center'><tr><td rowspan=14><div id=RAAstatsource></div></td><td colspan=2><a href='javascript:void(0)' id=BO_RAZ_Units title='Clear' >Units Selected</a></td><td>Attack Time</td><td>Reinforce Time</td></tr>";
            for (r=1; r<14; r++){
   	     m += '<tr><td align=right><img height=20 title="'+unsafeWindow.unitcost['unt'+r][0]+'" src=http://cdn1.kingdomsofcamelot.com/fb/e2/src/img/units/unit_'+r+'_30_s34.jpg></td><td align=left><input style="border:1px solid black;height:16px;font-size:11px;" id="RAAnbunit'+r+'" type=text size=7 value="0" ></td><td><span id="BOEstimationTT'+r+'">&nbsp;</span></td><td><span id="BOEstimationTZ'+r+'">&nbsp;</span></td></tr>';
      	}
      	var itemlist=[55,57,931,932];
	var BOitems="";
	for(var i=0;i<itemlist.length;i++){
		 BOitems += "<img src='http://kabam1-a.akamaihd.net/kingdomsofcamelot/fb/e2/src/img/items/30/"+itemlist[i]+".jpg' /><input type=checkbox id='BOitem_"+itemlist[i]+"'><span id='BOitemSpan_"+itemlist[i]+"'>" + unsafeWindow.ksoItems[itemlist[i]].count + "</span>&nbsp;";
        }
        m += "</table></td></tr>\
              <tr><td colspan=4>Knight : <SELECT id='RAApiKnight' type=list></select> <br>"+BOitems+"</td></tr></table>\
              <DIV class=ptstat>Saved Unit Configuration :</div><TABLE><tr><td colspan=2><select id=BO_AT_Fav></select><input type=button value='Reset' id=BO_AT_Fav_Sup><input type=button value='Reset All' id=BO_AT_Fav_RESET></td><td colspan=2>New : <input type=type id=BO_AT_Fav_Nom size=10 maxlength=12>&nbsp;<input type=button value='Save Troops' id=BO_AT_Fav_ajou>\
              <tr><td colspan=4><div id=ptRAAStatus style='overflow-y:auto; max-height:50px; height: 50px;'></div></td></tr></table>\
              <DIV class=ptstat>Auto Attack - Work in Progress</div><table></tr><tr><td><input type=button id='BOActiveAttack' value='ACTIVER : OFF' ></td><td colspan=3><span id='BOCompAttack'></span></tr>\
              <tr><td><b>Heure arriv&eacute;e :</b> <input type=text size=7 id='BOHorloge' value='" + Options.AttackHorloge + "'></td><td><input type=button value='Enregistrer' id='BOSaveAttack'></td><td><input type=button value='Editer l\'attaque' id='BOEditAttack' disabled></td></tr>\
              <tr><td colspan=4><span id='BOAttackProg'></span></td></tr></table>";
        t.cont.innerHTML = m; 
        t.statpourRAA = ById ('statpourRAA');
        //Gestion des favoris  
        t.Favoris = ById ('BO_AT_Fav');
	function metajourfavori() {
	       t.Favoris.innerHTML="<option value=''>...</option>";
	       var lisf = Options.AttackFav;
	       for (var m in lisf) {
	         var lis = lisf[m];
	          t.Favoris.innerHTML+="<option value='"+m+"'>"+lis[0]+"</option>";
      	       }  
	}
	ById("ptmarch_autoknight").addEventListener('click', function(){
		Options.marchautoknight = this.checked;
		saveOptions();
		t.show();
	},false);
       ById("BO_AT_Fav_RESET").addEventListener ('click', function() {
		 Options.AttackFav={};
		 saveOptions(); 
         metajourfavori();
       }, false); 
       ById("BO_AT_Fav_Sup").addEventListener ('click', function() {
       numfav=ById("BO_AT_Fav").value;
       if (numfav!="") {
        Options.AttackFav[numfav]={};
        delete Options.AttackFav[numfav];
        //Options.AttackFav=unset(Options.AttackFav, numfav);
        saveOptions(); 
        metajourfavori();
       }
       }, false); 
 	  ById("BO_RAZ_Units").addEventListener ('click', function() {
		for (r=1; r<14; r++) ById("RAAnbunit"+r).value=0; 
		}, false); 
       ById("BO_AT_Fav_ajou").addEventListener ('click', function() {
        if (ById("BO_AT_Fav_Nom").value=="") {
         alert("Please fill in a name!");
         return;
        }
        var a =ById("BO_AT_Fav_Nom").value;
        Options.AttackFav[a]={};
        var lisf = Options.AttackFav[a];
        lisf[0]=ById("BO_AT_Fav_Nom").value;
        for (r=1; r<14; r++) lisf[r]=ById("RAAnbunit"+r).value;
        ById("BO_AT_Fav_Nom").value="";
        saveOptions(); 
	metajourfavori();
       }, false); 
       ById("BO_AT_Fav").addEventListener ('change', function() {
         numfav=ById("BO_AT_Fav").value;
         if (numfav=="") {
          for (r=1; r<14; r++) ById("RAAnbunit"+r).value=0; 
         }else {
          var lisf = Options.AttackFav[numfav];
          for (var m in lisf) {
           if(m>0)
	    if (ById("RAAnbunit"+m)) ById("RAAnbunit"+m).value=lisf[m];
	  }
         }
       }, false); 
       // Fin gestion des favoris
       ById("BOitem_55").addEventListener ('click', function() {
        ById("BOitem_57").checked=false;
        t.estimerRes();
       }, false);  
       ById("BOitem_57").addEventListener ('click', function() {
              ById("BOitem_55").checked=false;
              t.estimerRes();
       }, false);
        t.statutRAA = ById ('ptRAAStatus');
        t.destinationCityx = ById ('RAAtypetrpx');
        t.destinationCityy = ById ('RAAtypetrpy');
        t.destinationCityx.value = Options.Xrenfort;
        t.destinationCityy.value = Options.Yrenfort;
        if (ById ('maparea_map').style.display!="none") {
         t.destinationCityx.value = ById ('mapXCoor').value;
         t.destinationCityy.value = ById ('mapYCoor').value;
        }
        t.listeFavoris = ById ('listeFavori');
        t.listeFavoris.addEventListener ('change', t.SelectFavoris, false);
        t.chargelistelieux = ById ('BOchargelistelieux');
        t.chargelistelieux.addEventListener ('click', t.chercherFavoris, false);
        t.actionREN = ById ('RENaction');
        t.actionRENB = ById ('RENBaction');
        t.actionREE = ById ('REEaction');
        t.actionRAA = ById ('RAAaction');
        t.actionRAR = ById ('RARaction');

  	t.actionREN.addEventListener ('click', function () { t.clickATTAQUEDo(2,0); }, false);
        t.actionRAA.addEventListener ('click',  function () { t.clickATTAQUEDo(4,0); }, false);
        t.actionRAR.addEventListener ('click',  function () { t.clickATTAQUEDo(5,0); }, false);
        t.actionRENB.addEventListener ('click',  function () { t.clickATTAQUEDo(2,1); }, false);
        t.actionREE.addEventListener ('click',  function () { t.clickATTAQUEDo(3,0); }, false);
        t.destinationCityx.addEventListener ('change', function () { t.estimerRes(); }, false);
        t.destinationCityy.addEventListener ('change', function () { t.estimerRes(); }, false);       
        var dcp0 = new CdispCityPicker ('ptRAA0', ById('RAAsrcRptspeedcity'), false, t.clickRAACitySourceSelect, Cities.byID[unsafeWindow.currentcityid].idx);
        t.estimerRes();
        t.BOAttackProg = ById ('BOAttackProg');
        t.BOHorloge = ById ('BOHorloge');
        t.BOSaveAttack = ById ('BOSaveAttack');
        t.BOEditAttack = ById ('BOEditAttack');
        t.BOCompAttack = ById ('BOCompAttack');
        t.BOActiveAttack  = ById ('BOActiveAttack');
        t.BOActiveAttack.addEventListener ('click', t.AutoattackOnOff, false);
        
        t.BOSaveAttack.addEventListener ('click', function () {
        
          var itemlist=[55,57,931,932];
	  for(var i=0;i<itemlist.length;i++){
	        ById('BOitemSpan_'+itemlist[i]).checked=false;
          }
        
         t.enregistreAttack();
        
        }, false);
        if (Options.AttackCibleX!=0 && Options.AttackCibleY!=0) {
         t.BOEditAttack.disabled=false;
        }
        t.BOEditAttack.addEventListener ('click', function () { 
          t.destinationCityx.value = Options.AttackCibleX;
          t.destinationCityy.value = Options.AttackCibleY;
          ById("RAApiKnight").value=Options.AttackKnight;
          nHtml.Click(ById("ptRAA0_"+Cities.byID[Options.AttackFromCity].idx)); 
          for (r=1; r<14; r++) {
	      ById("RAAnbunit"+r).value=Options.AttackUnits[r-1];
          }
        }, false);
        
        metajourfavori();
        if (Options.AttackOnOff) {
          t.BOActiveAttack.value='ACTIVER : ON';
    	  t.activeAttack();
        }
        t.clickRAACitySourceSelect(t.sourceCity);
        var closestNum = t.getclosestcity();
		t.dcp1 = new CdispCityPicker ('ptmarch_citydest', ById('BOVilleProche'), false, t.estimerRes, null).bindToXYboxes(ById("RAAtypetrpx"),ById("RAAtypetrpy"));
       }

    },
    getclosestcity : function (){
     var t = Tabs.Attaque;
	 var x1 = parseInt(t.sourceCity.x);
	 var x2 = parseInt(t.destinationCityx.value);
	 var y1 = parseInt(t.sourceCity.y);
	 var y2 = parseInt(t.destinationCityy.value);
	 var dist = distance (x1, y1, x2, y2);
	 var closestDist=999999;
	 var closestLoc=null;
	 var closestNum=1;
	 for (var c=0; c<Cities.numCities; c++){
		var city = Cities.cities[c];
		var dist=distance(city.x,city.y,x2,y2);
		if(dist<closestDist) {
		 closestDist=dist;
		 closestLoc=city.x +','+ city.y;
		 closestNum=c;
		}
	 }
	 return closestNum;
	},
    AutoattackOnOff:function() {
     // click click sur le bouton Activer le compte Ãƒ  rebour !
     var t = Tabs.Attaque;
     t.BOCompAttack.innerHTML='';
     clearTimeout (t.BOAttackTimer);
     if (t.BOActiveAttack.value=='ACTIVER : OFF') {
    	t.BOActiveAttack.value='ACTIVER : ON';
    	     Options.AttackOnOff = true;
    	     saveOptions();  
    	     t.activeAttack();
    	     
    	    } else {
    	     Options.AttackOnOff = false;
    	     saveOptions();  
    	     t.BOActiveAttack.value='ACTIVER : OFF';   
    }   
    },
    activeAttack:function() {
     var t = Tabs.Attaque;
     clearTimeout (t.BOAttackTimer);
     if (Options.AttackGoHorloge) {
       var depart=new Date()
       depart.setTime(Options.AttackGoHorloge);
       var now = unixTime()*1000;
       if (now >= Options.AttackGoHorloge) {
	t.BOCompAttack.innerHTML='<center><font color=red>LANCEMENT ATTAQUE EFFECTUE</font></center>';
	t.destinationCityx.value = Options.AttackCibleX;
	t.destinationCityy.value = Options.AttackCibleY;
	ById("RAApiKnight").value=Options.AttackKnight;
	nHtml.Click(ById("ptRAA0_"+Cities.byID[Options.AttackFromCity].idx));
	for (r=1; r<14; r++) {
	   ById("RAAnbunit"+r).value=Options.AttackUnits[r-1];
          }
      t.clickATTAQUEDo(4,0);
      clearTimeout (t.BOAttackTimer);
      Options.AttackGoHorloge=null;
      saveOptions();  
     }
     if (now > depart.getTime()) {
         t.BOCompAttack.innerHTML='<center><font color=red>IMPOSSIBLE</font></center>';
         clearTimeout (t.BOAttackTimer);
       	 Options.AttackGoHorloge=null;
         saveOptions();  
         return false;
     }
       
     t.BOAttackTimer=setTimeout(function(){
        var depart=new Date();
	depart.setTime(Options.AttackGoHorloge);
        var now = unixTime()*1000;
        var tempsrestant = depart.getTime() - now;
        t.BOCompAttack.innerHTML='<center><font color=red><b>ATTAQUE DANS '+timestr(tempsrestant/1000)+'</b></font></center>';
        t.activeAttack();
      },1000);
     }
    
    },
    enregistreAttack : function() {
     var t = Tabs.Attaque; 
     if (t.BOHorloge.value.match("^[0-9]{2}:[0-9]{2}:[0-9]{2}$")) {
       var horloge = t.BOHorloge.value;
       Options.AttackHorloge = horloge;
       
       var ndate=new Date();
       ndate.setHours(horloge.substr(0,2));
       ndate.setMinutes(horloge.substr(3,2));
       ndate.setSeconds(0);
       var atunits=new Array();
       for (r=1; r<14; r++) {
          atunits.push(parseInt(ById("RAAnbunit"+r).value));
       }
       Options.AttackUnits = atunits;
       Options.AttackFromCity = t.sourceCity.id;
       Options.AttackKnight = ById("RAApiKnight").value;
       Options.AttackCibleX = t.destinationCityx.value;
       Options.AttackCibleY = t.destinationCityy.value;
       
       var x1 = parseInt(t.sourceCity.x);
       var x2 = parseInt(t.destinationCityx.value);
       var y1 = parseInt(t.sourceCity.y);
       var y2 = parseInt(t.destinationCityy.value);
       var dist = distance (x1, y1, x2, y2);  
       var tempplusgrand=0;
       for (r=1; r<14; r++){
         if (parseInt(ById("RAAnbunit"+r).value)>0) {
               var m = estETA(dist, r, t.sourceCity.id);
               if (tempplusgrand<m.ETA) tempplusgrand=m.ETA;   
         }
       }
       var departtime=ndate.getTime() - (tempplusgrand*1000);
       var depart=new Date()
       depart.setTime(departtime);
       
       var now = unixTime()*1000;
       if (now > depart.getTime()) {
        t.BOAttackProg.innerHTML = "Depart impossible !";
        return false;
       }
       Options.AttackGoHorloge =  depart.getTime();
       saveOptions ();
       t.BOAttackProg.innerHTML = "Attaque sur " + Options.AttackCibleX + ","+ Options.AttackCibleY +" enregistr&eacute;e";
       t.BOEditAttack.disabled=false;
     } else {
      t.BOAttackProg.innerHTML = "Mauvais format de l'horloge.";
     }     
    
    },
    clickATTAQUEDo: function(typemarche, bouffe) {
      var t = Tabs.Attaque;  
      var totalunit=0;
      if (typemarche==3 && ById("RAAnbunit3").value==0) ById("RAAnbunit3").value=1;
      for (r=1; r<14; r++){
         if (typemarche==3 && r!=3) {
          ById("RAAnbunit"+r).value=0;
         }
          if (parseInt(ById("RAAnbunit"+r).value) > parseInt(ById("RAAdestunit"+r).value)) {
            ById("RAAnbunit"+r).style.backgroundColor="red";
            return false;
          }
          totalunit=totalunit+parseInt(ById("RAAnbunit"+r).value);
          ById("RAAnbunit"+r).style.backgroundColor="";
      }
      var errMsg = "";
      if (isNaN (t.destinationCityx.value) ||t.destinationCityx.value<0 || t.destinationCityx.value>749)
            errMsg = "X coordinates must be between 0 and 749<BR>"; 
      if (isNaN (t.destinationCityy.value) || t.destinationCityy.value<0 || t.destinationCityy.value>749)
       errMsg += "Y coordinates must be between 0 and 749<br>";
      
      if (ById("RAApiKnight").value==0 && typemarche==4) {
       errMsg += "No knight selected!<BR>"; 
      }
      
      if (errMsg != "") {
           t.statutRAA.innerHTML = "<FONT COLOR=#550000>"+ errMsg +"</font>";
           return;
      }
      
      var x=t.destinationCityx.value;
      var y=t.destinationCityy.value;
      // On sauvegardes les coordonnes en cas de F5
      t.SaveCoordsOptions(x,y);
      
      
      // Les objets pour l'attaque !
      var e=1;
      var f=unsafeWindow.unixtime();
      if(Seed.playerEffects.aurasExpire){
      if(Seed.playerEffects.aurasExpire>f){e=1.15}}
      if(Seed.playerEffects.auras2Expire){if(Seed.playerEffects.auras2Expire>f){e=1.3}}

     var l_elem=ById("BOitem_931");
     if(l_elem&&l_elem.checked&&parseInt(Seed.items["i931"])>0){
       e+=0.25;
      
     }
     var l_elem=ById("BOitem_932");
     if(l_elem&&l_elem.checked&&parseInt(Seed.items["i932"])>0){
       e+=0.5;
     }
	 
	 var trmarchsizebuff = equippedthronestats(66);
	 if(trmarchsizebuff > 0)
		e+=(trmarchsizebuff/100);
       
      var params = unsafeWindow.Object.clone(unsafeWindow.g_ajaxparams);
      
      if (totalunit==0) {
         t.statutRAA.innerHTML = '<FONT COLOR=#550000>You have no available units!</font>';
           return;
      }
	  
	  			//djf Adjust for ascended city rally points
			var isPrestige = getCityPrestige(t.sourceCity.id);
			var PrestigeLevel = getCityPrestigeLevel(t.sourceCity.id);
			if (isPrestige) e+= 0.5 + (PrestigeLevel*0.05);

      var niveauPointRall=parseInt(getCityBuilding (t.sourceCity.id, 12).maxLevel); // 12=Point de ralliement
         var maxtroupe=parseInt(niveauPointRall*10000*e);
         if (niveauPointRall==11) maxtroupe=parseInt(150000*e);
         if (niveauPointRall==12) maxtroupe=parseInt(200000*e);
      if (totalunit>maxtroupe) {
       t.statutRAA.innerHTML = '<FONT COLOR=#550000>You can only send '+maxtroupe+' units.</font>';
       return;
      }
      var iused=new Array();
      var itemlist=[55,57,931,932];
      for(var i=0;i<itemlist.length;i++){
      
       var l_elem=ById("BOitem_"+itemlist[i]);
       if(l_elem&&l_elem.checked&&parseInt(Seed.items["i"+itemlist[i]])>0){
        iused.push(itemlist[i]);       
       }      
      }
      var res=0;
      if (bouffe==1) {
       for (var i=1;i<14;i++) {
        res += parseInt(unsafeWindow.unitstats['unt'+i][5] * ById("RAAnbunit"+i).value * (1 + (0.10 * Seed.tech.tch10)));
       }
       }
      params.items=iused.join(","); 
         params.cid= t.sourceCity.id;
         params.type = typemarche; // 5 = REASSIGNER - 4 = ATTAQUE - 2 = RENFORCER
         params.xcoord = x;
         params.ycoord = y;
   	 params.kid= ById("RAApiKnight").value;
	 params.r1 = res; 
	 params.r2 = 0; 
	 params.r3 = 0; 
	 params.r4 = 0; 
	 params.gold = 0; 
	 params.u1 = 0;
  	 params.u2 = 0;
  	 params.u3 = 0;
  	 params.u4 = 0;
  	 params.u5 = 0;
  	 params.u6 = 0;
  	 params.u7 = 0;
  	 params.u8 = 0;
  	 params.u9 = 0;
  	 params.u10 = 0;
  	 params.u11 = 0;
 	 params.u12 = 0;
	 params.u13 = 0;
 
 
         if (typemarche!=3) {
        if (ById("RAAnbunit1").value>0) params.u1 = ById("RAAnbunit1").value;
	if (ById("RAAnbunit2").value>0) params.u2 = ById("RAAnbunit2").value;
	if (ById("RAAnbunit3").value>0) params.u3 = ById("RAAnbunit3").value;
	if (ById("RAAnbunit4").value>0) params.u4 = ById("RAAnbunit4").value;
	if (ById("RAAnbunit5").value>0) params.u5 = ById("RAAnbunit5").value;
	if (ById("RAAnbunit6").value>0) params.u6 = ById("RAAnbunit6").value;
	if (ById("RAAnbunit7").value>0) params.u7 = ById("RAAnbunit7").value;
	if (ById("RAAnbunit8").value>0) params.u8 = ById("RAAnbunit8").value;
	if (ById("RAAnbunit9").value>0) params.u9 = ById("RAAnbunit9").value;
	if (ById("RAAnbunit10").value>0) params.u10 = ById("RAAnbunit10").value;
	if (ById("RAAnbunit11").value>0) params.u11 = ById("RAAnbunit11").value;
	if (ById("RAAnbunit12").value>0) params.u12 = ById("RAAnbunit12").value;
	if (ById("RAAnbunit13").value>0) params.u13 = ById("RAAnbunit13").value;
	
	}else {
	 params.u3 = ById("RAAnbunit3").value;
	 ById("RAAnbunit3").value=0;
	}
  	t.actionRAA.disabled=true;
        t.actionREN.disabled=true;
        t.actionREE.disabled=true;
	t.statutRAA.innerHTML = "<i><b>Sending march....</b></i>";
	new MyAjaxRequest(unsafeWindow.g_ajaxpath + "ajax/march.php" + unsafeWindow.g_ajaxsuffix, {
	              method: "post",
	              parameters: params,
	              loading: true,
	              onSuccess: function (transport) {
	                  var t = Tabs.Attaque;  
	                  var rslt = transport;
	                  if (rslt.ok) {
			   var timediff = parseInt(rslt.eta) - parseInt(rslt.initTS);
	                   var ut = unsafeWindow.unixtime();
	                   var unitsarr=[0,0,0,0,0,0,0,0,0,0,0,0,0]; //djf
	                   for(i = 0; i <= unitsarr.length; i++){
	                   	if(params["u"+i]){
	                  	unitsarr[i] = params["u"+i];
	                  	}
	                   }
	                   var resources=new Array();
	                   resources[0] = params.gold;
	                   for(i=1; i<=4; i++){
	                  	resources[i] = params["r"+i];
	                   }
	                   var currentcityid =  t.sourceCity.id;
	                   unsafeWindow.attach_addoutgoingmarch(rslt.marchId, rslt.marchUnixTime, ut + timediff, params.xcoord, params.ycoord, unitsarr, params.type, params.kid, resources, rslt.tileId, rslt.tileType, rslt.tileLevel, currentcityid, true);
	                   unsafeWindow.update_seed(rslt.updateSeed)
	                   if(rslt.updateSeed){unsafeWindow.update_seed(rslt.updateSeed)};
	                   
	                   for(var i=0;i<iused.length;i++){
						Seed.items["i"+iused[i]]=parseInt(Seed.items["i"+iused[i]])-1;unsafeWindow.ksoItems[iused[i]].subtract();
					   }
					    var typeattaque = "";
						switch (typemarche){
							case 2:
								typeattaque="Reinforce successful";
								break;
							case 3:
								typeattaque="Scout successful";
								break;
							case 4:
								typeattaque="Attack successful";
								break;
							case 5:
								typeattaque="Reassign successful";
								break;
							default:
								typeattaque="March successful";
						}
     	 		   t.statutRAA.innerHTML = "<center><font size='3px'><b>"+typeattaque+"</b></font></center>";
      			   t.clickRAACitySourceSelect(t.sourceCity);
	                  } else {
						 t.statutRAA.innerHTML ="<font color=red size='3px'><b>Error sending march!<b></font>";
						 if (rslt.msg) {
						   t.statutRAA.innerHTML +="<br><font color=black size='2px'>" + rslt.msg +"</font>";
						 }else{
						   t.statutRAA.innerHTML +="<br>Waiting for 2 seconds!</font>";
						   //setTimeout(function() { t.clickATTAQUEDo(); }, 2000);
						 }
	                 }
	                 t.actionRAA.disabled=false;
      			     t.actionREN.disabled=false;
      			     t.actionREE.disabled=false;
	              },
	                  onFailure: function () {
	                    var t = Tabs.Attaque;
	                    t.statutRAA.innerHTML ="<font color=red size='3px'><b>Error communicating with server!<b></font>";
	                    t.actionRAA.disabled=false;
      			    t.actionREN.disabled=false;
      			    t.actionREE.disabled=false;
	                  }
	          });
            
  
    },
  
    estimerRes: function() {
     var t = Tabs.Attaque;
     // CAlcul de ETA = Estimation du temps de marches
     var x1 = parseInt(t.sourceCity.x);
     var x2 = parseInt(t.destinationCityx.value);
     var y1 = parseInt(t.sourceCity.y);
     var y2 = parseInt(t.destinationCityy.value);
     var dist = distance (x1, y1, x2, y2);
     ById("BOEstimationD").innerHTML = '<b>' + dist + '</b>&nbsp;<a href="javascript:void(0)" onclick="cm.utils.CoordinateLinkController.onClick(event)" class="coordinateLink">('+ t.destinationCityx.value +','+ t.destinationCityy.value +')</a>';     
     for (r=1; r<14; r++){
        var m = estETA(dist, r, t.sourceCity.id);
        ById("BOEstimationTT"+r).innerHTML = "<b>" + m.etaStr + "</b>";
        ById("BOEstimationTZ"+r).innerHTML = "<b>" + m.friendEtaStr + "</b>";
     }
    },
    SelectFavoris:function() {
      var t = Tabs.Attaque;
      if (t.listeFavoris.value!='') {
       var valeur=t.listeFavoris.value;
       var x=valeur.substr(0, valeur.lastIndexOf(','));
       var y=valeur.substr(valeur.lastIndexOf(',')+1, valeur.length);
       t.destinationCityx.value = x;
       t.destinationCityy.value = y;
      }
      t.estimerRes();
     },
      chercherFavoris: function() {
      var t = Tabs.Attaque;
      var myA = getMyAlliance ();
      if (myA[0]!=0) {
         var params = unsafeWindow.Object.clone(unsafeWindow.g_ajaxparams);
         params.perPage = 100;
         params.allianceId = myA[0];
             new MyAjaxRequest(unsafeWindow.g_ajaxpath + "ajax/getUserLeaderboard.php" + unsafeWindow.g_ajaxsuffix, {
   	        method: "post",
   	        parameters: params,
   	        onSuccess: function (rslt) {
   	          // on vide la liste
   	          //t.listeFavoris.innerHTML=null;
   	          if (rslt.ok){
   	           var z=0;
   	           var m="";
   	           for (var i=0; i<rslt.results.length; i++){
        		      p = rslt.results[i];
   		      if (p.userId != 0){
   		       for (var c=0; c<p.cities.length; c++){
   		         if (Seed.player.name!=p.displayName) {
   		          m += "<option value='" + p.cities[c].xCoord + ","+ p.cities[c].yCoord+"'>" + p.displayName + " - City " + (c+1) + " - " + p.cities[c].xCoord + "," + p.cities[c].yCoord+"</option>";
   		         }
   		       }  //fin for cities  	       
   		      }   //fin if user 
         	            } //fin for resultat
         	    t.listeFavoris.innerHTML="<option value=''>Selection...</option>"+m;
   	          }// fin
   	        },
   	        onFailure: function (rslt) {
   	          t.listeFavoris.innerHTML="<option>Error getting info</option>";
   	        },
       	});
             
      } else {
        // Si pas d'alliance !
        t.listeFavoris.innerHTML="<option>Pas d'alliance !</option>";
      }
         
  },
   SaveCoordsOptions: function(x,y) {
       Options.Xrenfort = x;
       Options.Yrenfort = y;
       saveOptions ();
  },
   
  clickRAACitySourceSelect : function (city){
     var t = Tabs.Attaque;
    
     if (t.sourceCity!=city) {
      t.sourceCity = city; 
     }
     var m="";
     m="<table cellspacing=0 cellpadding=0 width=80%><tr><td colspan=2>Units Available</tr>";
     var cityID = 'city'+ t.sourceCity.id;
     for (r=1; r<14; r++){   
       m += '<tr><td align=right><img title="'+unsafeWindow.unitcost['unt'+r][0]+'" height=20 src=http://cdn1.kingdomsofcamelot.com/fb/e2/src/img/units/unit_'+r+'_30_s34.jpg></td>\
             <td align=left><input style="border:1px solid black;height:16px;font-size:11px;" id="RAAdestunit'+r+'" type=text size=7 readonly value="'+parseInt(Seed.units[cityID]['unt'+r])+'">&nbsp;\
             <input type=button value="--->" id="RAApdestunit'+r+'"  style="border:1px solid black;height:16px;font-size:11px;"></td></tr>';
     }
     m += "</table>";
     ById("RAAstatsource").innerHTML = m;
        var knt = new Array();
        for (k in Seed.knights['city' + t.sourceCity.id]){
               		if (Seed.knights['city' + t.sourceCity.id][k]["knightStatus"] == 1 && Seed.leaders['city' + t.sourceCity.id]["resourcefulnessKnightId"] != Seed.knights['city' + t.sourceCity.id][k]["knightId"] && Seed.leaders['city' + t.sourceCity.id]["politicsKnightId"] != Seed.knights['city' + t.sourceCity.id][k]["knightId"] && Seed.leaders['city' + t.sourceCity.id]["combatKnightId"] != Seed.knights['city' + t.sourceCity.id][k]["knightId"] && Seed.leaders['city' + t.sourceCity.id]["intelligenceKnightId"] != Seed.knights['city' + t.sourceCity.id][k]["knightId"]){
               			knt.push ({
               				Name:   Seed.knights['city' + t.sourceCity.id][k]["knightName"],
               				Combat:	Seed.knights['city' + t.sourceCity.id][k]["combat"],
               				ID:	Seed.knights['city' + t.sourceCity.id][k]["knightId"],
               			});
               		}
               }
               knt = knt.sort(function sort(a,b) {a = parseInt(a['Combat']);b = parseInt(b['Combat']);return a == b ? 0 : (a > b ? -1 : 1);}); 
               ById('RAApiKnight').options.length=0;
               var o = document.createElement("option");
     	       o.text = "--Select a Knight--"
     	       o.value = 0;
               ById("RAApiKnight").options.add(o);
               for (k in knt){
            			if (knt[k]["Name"] !=undefined){
        	    			var o = document.createElement("option");
        	    			o.text = (knt[k]["Name"] + ' (' + knt[k]["Combat"] +')')
        	    			o.value = knt[k]["ID"];
        	    			ById("RAApiKnight").options.add(o);
            			}
         }
     
      if (ById('RAApiKnight').options.length>0) {
		  if(Options.marchautoknight)
			ById('RAApiKnight').selectedIndex=1;
      } 
      
      var itemlist=[55,57,931,932];
      for(var i=0;i<itemlist.length;i++){
        ById('BOitemSpan_'+itemlist[i]).innerHTML = unsafeWindow.ksoItems[itemlist[i]].count;
      }
     for (r=1; r<14; r++){
       ById("RAApdestunit"+r).addEventListener ('click', function() {
			 var nomcha=this.id.replace("RAApdest","RAAdest");
			 var nomcha2=this.id.replace("RAApdestunit","RAAnbunit");
			 ById(nomcha2).value=0; 
			 var e=1;
			 var f=unsafeWindow.unixtime();
			 if(Seed.playerEffects.aurasExpire){if(Seed.playerEffects.aurasExpire>f){e=1.15}}
			 if(Seed.playerEffects.auras2Expire){if(Seed.playerEffects.auras2Expire>f){e=1.3}}

			 var l_elem=ById("BOitem_931");
			 if(l_elem&&l_elem.checked&&parseInt(Seed.items["i931"])>0)
				e+=0.25;
			 var l_elem=ById("BOitem_932");
			 if(l_elem&&l_elem.checked&&parseInt(Seed.items["i932"])>0)
				e+=0.5;
				
			 var trmarchsizebuff = equippedthronestats(66);
			 if(trmarchsizebuff > 0)
				e+=(trmarchsizebuff/100);

			
			//djf Adjust for ascended city rally points
			var isPrestige = getCityPrestige(t.sourceCity.id);
			var PrestigeLevel = getCityPrestigeLevel(t.sourceCity.id);
			if (isPrestige) e+= 0.5 + (PrestigeLevel*0.05);
			
			var niveauPointRall=parseInt(getCityBuilding (t.sourceCity.id, 12).maxLevel); // 12=Point de ralliement
			 var maxtroupe=parseInt(niveauPointRall*10000*e);
			 if (niveauPointRall==11) maxtroupe=parseInt(150000*e);
			 if (niveauPointRall==12) maxtroupe=parseInt(200000*e);
			 logit("djf1 Rally lvl="+niveauPointRall+"/"+e+":"+isPrestige+"@lvl="+PrestigeLevel);	
			 
			 var nbunitto=0;
			 for (r=1; r<14; r++) {
			   nbunitto+=parseInt(ById("RAAnbunit"+r).value);
			 }
			 var libre = parseInt(maxtroupe - nbunitto);
			 if (ById(nomcha).value>=libre) {
			   ById(nomcha2).value = libre;
			 }  else {
			   ById(nomcha2).value= ById(nomcha).value;
			 }
       }, false);
     }
     if (t.sourceCity!=city) {
           for (r=1; r<14; r++){
            ById("RAAnbunit"+r).value="0";
           }
     } else {
          
          for (r=1; r<14; r++){
              if (ById("RAAnbunit"+r).value=="") ById("RAAnbunit"+r).value="0";
              if (ById("RAAdestunit"+r).value=="") ById("RAAdestunit"+r).value="0";
                if (parseInt(ById("RAAnbunit"+r).value)>parseInt(ById("RAAdestunit"+r).value)) {
                 ById("RAAnbunit"+r).value="0";
                }
           }
     }
     t.estimerRes();
     var closestNum = t.getclosestcity();
     //if(t.dcp1)
		//t.dcp1.selectBut(closestNum);
   },
 
 
}

function equippedthronestats (stat_id){
	var current_slot = Seed.throne.activeSlot;
	var equip_items = Seed.throne.slotEquip[current_slot];
	var total = 0;
	for(var k = 0; k<equip_items.length; k++){
		var item_id = equip_items[k];
		var item = uW.kocThroneItems[item_id];
		logit(inspect(item,3,1));
		for(var i = 1; i<=item.quality; i++){
			var id = item["effects"]["slot"+i]["id"];
			if(id == stat_id){
				var tier = parseInt(item["effects"]["slot"+i]["tier"]);
				var level = item["level"];
				var p = uW.cm.thronestats.tiers[id][tier];
				var Percent = p.base + ((level * level + level) * p.growth * 0.5);
				total += Percent;
			}
		}
	}
	return total;
}


function estETA(dist, unit, cityID) {
	var ret={ETA:0,etaStr:'N/D',friendETA:0,friendEtaStr:'N/D'};    
	if (dist <= 0) return ret;
	var troop_type = unit;
	var horse=0;
	if(troop_type>6) horse=1;
	var troop_speed=parseInt(unsafeWindow.unitstats["unt"+troop_type][3])*(1+0.1*parseInt(Seed.tech.tch11));
	if (horse){
		troop_speed=troop_speed*(1+0.05*parseInt(Seed.tech.tch12))
	} 
	var Speed = troop_speed;
	var gi=unsafeWindow.cm.guardianModalModel.getMarchBonus();
	var multiplier=1+(gi*0.01);
	Speed=Speed*multiplier;
	var gSpeed = 0;
	var estSec;
	if (Speed>0) {
	  gSpeed = Speed/6000;
	  estSec = Math.ceil(parseFloat(dist)/gSpeed);
	}
	var e=1;
	if (ById("BOitem_55")) {
	  var l_elem=ById("BOitem_55");
	  if(l_elem&&l_elem.checked>0){ e=0.75;     }
	}
	if (ById("BOitem_57")) {
	  var l_elem=ById("BOitem_57");
	  if(l_elem&&l_elem.checked){   e=0.5;   }
	}
	ret.ETA = (parseInt((estSec*e+''))+30); 
	if(Seed.playerEffects.returnExpire>unsafeWindow.unixtime()){
	  ret.ETA=parseInt(ret.ETA*0.5);
	}
	ret.etaStr = timestr (ret.ETA,1);
	var building = getCityBuilding (cityID, 18);
	if (building) {
	  fSpeed = Speed * (1 + parseInt(building.maxLevel)/2);
	  gSpeed = fSpeed/6000;
	  estSec = (dist/gSpeed).toFixed(0);
	  ret.friendETA = parseInt((estSec*e+''))+30; 
	  ret.friendEtaStr = timestr ((ret.friendETA+''),1);
	}
	return ret;
}

/********************************* Messages Tab *************************************/
Tabs.Rpt = {
	tabOrder:    90,
	tabLabel:    'Reports',
	cont:        null,
	state:       null,
	minPages:    parseInt(Options.arPageFrom),
	maxPages:    parseInt(Options.arPageTo),
	data:        [],
	report:      [],
	totalPages:  parseInt(Options.arPageTo),
	what:        '',
	whatNot:     '',
	content:     '',

	init: function (div){
		var t = Tabs.Rpt;
		t.cont=div;
		unsafeWindow.getmsg = t.getMailBody;
		if (REPORT_Detail) unsafeWindow.getReport = Rpt.FindReport; //djf report
		else unsafeWindow.getReport = t.getReportBody;
		
		var tc = '<DIV class=ptstat>SEARCH INBOX, OUTBOX, PLAYER AND ALLIANCE REPORTS</DIV><DIV class=ptentry><TABLE><TR align=center valign=center>';
		tc += '<TD width = "100px" ; border:none"><a href="http://code.google.com/p/koc-power-tools/wiki/HowToMessages" target="_blank">HELP</a></td></tr>';
		tc += '<TD class=xtab align=right>Type:&nbsp;<SELECT id="idRptType">';
		tc += '<OPTION value="alliance" ' + (Options.rptType=='alliance'?'SELECTED':'') + '>Alliance Reports</OPTION>';
		tc += '<OPTION value="player" ' + (Options.rptType=='player'?'SELECTED':'') + '>Player Reports</OPTION>';
		tc += '<OPTION value="inbox" ' + (Options.rptType=='inbox'?'SELECTED':'') + '>Inbox</OPTION>';
		tc += '<OPTION value="outbox" ' + (Options.rptType=='outbox'?'SELECTED':'') + '>Outbox</OPTION></SELECT>';
		tc += '<BR />Pages:&nbsp;<INPUT id="idRptPageFrom" size=1 value="' + Options.arPageFrom + '">&#8211;<INPUT id="idRptPageTo" size=1 value="' + Options.arPageTo + '"></TD>';
		tc += '<TD class=xtab align=right>Attacker:&nbsp;<SELECT id="idRptAttacker">'; // Options.arPageFrom - Options.arPageTo
		tc += '<OPTION value="Them" ' + (Options.arAttacker=='Them'?'SELECTED':'') + '>Them</OPTION>';
		tc += '<OPTION value="Us" ' + (Options.arAttacker=='Us'?'SELECTED':'') + '>Us</OPTION>';
		tc += '<OPTION value="Both" ' + (Options.arAttacker=='Both'?'SELECTED':'') + '>Both</OPTION></SELECT>';
		tc += '<BR />Target:&nbsp;<SELECT id="idRptTarget">';
		tc += '<OPTION value="Them" ' + (Options.arTarget=='Them'?'SELECTED':'') + '>Them</OPTION>';
		tc += '<OPTION value="Us" ' + (Options.arTarget=='Us'?'SELECTED':'') + '>Us</OPTION>';
		tc += '<OPTION value="Both" ' + (Options.arTarget=='Both'?'SELECTED':'') + '>Both</OPTION></SELECT></TD>';
		tc += '<TD class=xtab align=right>Contains:&nbsp;<INPUT id=idRptWhat type=text size=11 maxlength=50 value=""><BR />';
		tc += 'But not:&nbsp;<INPUT id=idRptWhatNot type=text size=11 maxlength=50 value=""></TD>';
		tc += '<TD class=xtab align=left><INPUT id=idRptAttack type=checkbox '+(Options.arAttack?'CHECKED':'')+' />&nbsp;Attack<BR />';
		tc += '<INPUT id=idRptScout type=checkbox '+(Options.arScout?'CHECKED':'')+' />&nbsp;Scout</TD>';
		tc += '<TD class=xtab align=left><INPUT id=idRptReinforce type=checkbox '+(Options.arReinforce?'CHECKED':'')+' />&nbsp;Reinforce<BR />';
		tc += '<INPUT id=idRptTransport type=checkbox '+(Options.arTransport?'CHECKED':'')+' />&nbsp;Transport</TD>';
		tc += '<TD class=xtab align=left><INPUT id=idRptSearch type=submit value="Start Search" /></TD></TR></TABLE></DIV>';
		tc += '<DIV class=ptstat><TABLE width=100% cellspacing=0><TR><TD class=xtab align=left width=125><DIV id=idRptSearched></DIV></TD></TD>';
		tc += '<TD class=xtab><TD class=xtab align=center><SPAN style="white-space:normal" id=idRptStatus>&nbsp;</span></TD></TD>';
		tc += '<TD class=xtab><TD class=xtab align=right width=125><DIV id=idRptFound></DIV></TD></TR></TABLE></DIV>';
		tc += '<DIV id="idRptResultsDiv" style="height:556px; max-height:556px; overflow-x:auto; overflow-y:auto; white-space:nowrap;"></DIV>';
		t.cont.innerHTML = tc;
		document.getElementById('idRptType').addEventListener ('change', t.handleRptType, false);
		document.getElementById('idRptPageFrom').addEventListener ('change', t.handleRptPages, false);
		document.getElementById('idRptPageTo').addEventListener ('change', t.handleRptPages, false);
		document.getElementById('idRptAttacker').addEventListener ('change', t.handleRptAttacker, false);
		document.getElementById('idRptTarget').addEventListener ('change', t.handleRptTarget, false);
		document.getElementById('idRptWhat').addEventListener ('keyup', t.handleRptWhat, false);
		document.getElementById('idRptWhatNot').addEventListener ('keyup', t.handleRptWhatNot, false);
		document.getElementById('idRptSearch').addEventListener ('click', t.handleRptSearch, false);
		t.togOpt ('idRptAttack', 'arAttack');
		t.togOpt ('idRptScout', 'arScout');
		t.togOpt ('idRptReinforce', 'arReinforce');
		t.togOpt ('idRptTransport', 'arTransport');

		return this.cont;
	},

	togOpt: function (checkboxId, optionName){
		var t = Tabs.Rpt;
		var checkbox = document.getElementById(checkboxId);
		checkbox.addEventListener ('change', eventHandler, false);
		function eventHandler (){
			Options[optionName] = this.checked;
			saveOptions();
			if (t.data.length > 0)
				if (Options.rptType == 'alliance' || Options.rptType == 'player')
					t.DisplayRpt();
				else
					t.DisplayMail();
		}
	},

	handleRptType: function(){
		var t = Tabs.Rpt;
		Options.rptType = document.getElementById("idRptType").value;
		saveOptions();
		document.getElementById("idRptSearched").innerHTML = '';
		document.getElementById("idRptStatus").innerHTML = '&nbsp;';
		document.getElementById("idRptFound").innerHTML = '';
		document.getElementById("idRptResultsDiv").innerHTML = '';
	},

	handleRptPages: function(){
		var t = Tabs.Rpt;
		t.minPages=parseInt(document.getElementById("idRptPageFrom").value);
		t.maxPages=parseInt(document.getElementById("idRptPageTo").value);
		if (t.maxPages < t.minPages) {
			t.maxPages = t.minPages;
			document.getElementById("idRptPageTo").value = t.maxPages;
		}
		Options.arPageFrom = t.minPages;
		Options.arPageTo = t.maxPages;
		saveOptions();
		t.totalPages=t.maxPages;
	},

	handleRptAttacker: function(){
		var t = Tabs.Rpt;
		Options.arAttacker = document.getElementById("idRptAttacker").value;
		saveOptions();
		if ((Options.rptType == 'alliance' || Options.rptType == 'player') && t.data.length > 0)
			t.DisplayRpt();
	},

	handleRptTarget: function(){
		var t = Tabs.Rpt;
		Options.arTarget = document.getElementById("idRptTarget").value;
		saveOptions();
		if ((Options.rptType == 'alliance' || Options.rptType == 'player') && t.data.length > 0)
			t.DisplayRpt();
	},

	handleRptWhat: function(){
		var t = Tabs.Rpt;
		t.what = document.getElementById("idRptWhat").value;
		if (t.data.length > 0)
			if (Options.rptType == 'alliance' || Options.rptType == 'player')
				t.DisplayRpt();
			else
				t.DisplayMail();
	},

	handleRptWhatNot: function(){
		var t = Tabs.Rpt;
		t.whatNot = document.getElementById("idRptWhatNot").value;
		if (t.data.length > 0)
			if (Options.rptType == 'alliance' || Options.rptType == 'player')
				t.DisplayRpt();
			else
				t.DisplayMail();
	},

	handleRptSearch: function(){
		var t = Tabs.Rpt;
		if (t.searchRunning){
			t.searchRunning = false;
			t.stopSearch ('SEARCH CANCELLED!');
			return;
		}
		t.handleRptPages();
		document.getElementById ('idRptSearch').value = 'Stop Search';
		document.getElementById('idRptStatus').innerHTML = 'Searching page ' + t.minPages + ' of ' + t.maxPages;
		t.searchRunning = true;
		t.data=[];
		t.report = [];
		if (Options.rptType == 'alliance' || Options.rptType == 'player')
			t.getRpt(t.minPages);
		else
			t.getMail(t.minPages);
	},

	stopSearch: function (msg){
		var t = Tabs.Rpt;
		if (t.searchRunning || msg == 'SEARCH CANCELLED!')
			document.getElementById ('idRptStatus').innerHTML = '<FONT color=#ffaaaa>' + msg + '</FONT>';
		document.getElementById ('idRptSearch').value = 'Start Search';
		t.searchRunning = false;
		if (Options.rptType == 'alliance' || Options.rptType == 'player')
			t.DisplayRpt();
		else
			t.DisplayMail();
	},

	getMail: function (pageNum){
		var t = Tabs.Rpt;
		var params = unsafeWindow.Object.clone(unsafeWindow.g_ajaxparams);
		params.pf=0;
		params.requestType="GET_MESSAGE_HEADERS_FOR_USER_INBOX";
		params.boxType = document.getElementById('idRptType').value;
		params.pageNo = pageNum;
		new MyAjaxRequest(unsafeWindow.g_ajaxpath + "ajax/getEmail.php" + unsafeWindow.g_ajaxsuffix, {
			method: "post",
			parameters: params,
			onSuccess: function (rslt) {
				t.getMailCallback(rslt, pageNum);
			},
			onFailure: function () {
			},
		}, false);
	},

	getMailCallback: function(rslt, page) {
		var t = Tabs.Rpt;
		if (rslt) {
			if (!rslt.ok) {
				document.getElementById("idRptStatus").innerHTML = '<FONT color=#ffaaaa>' + rslt.errorMsg + '</FONT>';
				return;
			}
			t.totalPages=parseInt(rslt.noOfPages);
			if (t.totalPages < t.maxPages)
				t.maxPages = t.totalPages;
			if (rslt.message && page) {
				var ml = rslt.message;
				if (rslt.messageCount > 0) {
					var rptkeys = unsafeWindow.Object.keys(ml);
					for (var i = 0; i < rptkeys.length; i++) {
						var rpt = ml[rptkeys[i]];
						rpt.page = page;
						t.data.push(rpt);
					}
				}
			}
			if (parseInt(page)+1 <= t.maxPages && t.searchRunning) {
				document.getElementById("idRptStatus").innerHTML = 'Searching page ' + (parseInt(page)+1) + ' of ' + t.maxPages;
				t.getMail(parseInt(page)+1);
				if (t.data.length > 0)
					t.DisplayMail();
			} else if (page)
				t.stopSearch ('Done!');
		}
	},

	getRpt: function (pageNum){
		var t = Tabs.Rpt;
		var params = unsafeWindow.Object.clone(unsafeWindow.g_ajaxparams);
		params.pageNo = pageNum;
		if (Options.rptType == 'alliance')
			params.group = "a";
		new MyAjaxRequest(unsafeWindow.g_ajaxpath + "ajax/listReports.php" + unsafeWindow.g_ajaxsuffix, {
			method: "post",
			parameters: params,
			onSuccess: function (rslt){
				t.getRptCallback (rslt, pageNum);
			},
			onFailure: function (rslt){
				t.getRptCallback (rslt, pageNum);
			},
		}, false);
	},

	getRptCallback: function(rslt, page){
		var t = Tabs.Rpt;
		if (rslt) {
			if (!rslt.ok) {
				document.getElementById("idRptStatus").innerHTML = '<FONT color=#ffaaaa>' + rslt.errorMsg + '</FONT>';
				return;
			}
			t.totalPages=parseInt(rslt.totalPages);
			if (t.totalPages < t.maxPages)
				t.maxPages = t.totalPages;
			if (rslt.arReports && page) {
				var ar = rslt.arReports;
				if (ar.length == 0)
					t.stopSearch('Empty pages found from page ' + page + ' onwards - Kabam glitch');
				var rptkeys = unsafeWindow.Object.keys(ar);
				for (var i = 0; i < rptkeys.length; i++) {
					var rpt = ar[rptkeys[i]];
					var reportId = parseInt(rpt.reportId);
					t.report[reportId] = [];

					// Attacker
					t.report[reportId].side1Name = rslt.arPlayerNames['p'+rpt.side1PlayerId];
					t.report[reportId].side1AllianceId = parseInt(rpt.side1AllianceId);
					if (rpt.side1AllianceId > 0)
						t.report[reportId].side1AllianceName = rslt.arAllianceNames['a'+rpt.side1AllianceId];
					else
						t.report[reportId].side1AllianceName = 'unaligned';
					if (rpt.side1CityId > 0)
						t.report[reportId].side1CityName = rslt.arCityNames['c'+rpt.side1CityId];
					else
						t.report[reportId].side1CityName = 'none';
					t.report[reportId].side1XCoord = rpt.side1XCoord;
					t.report[reportId].side1YCoord = rpt.side1YCoord;
					// Target
					if (parseInt(rpt.side0PlayerId) == 0) { // Kabam
						t.report[reportId].side0Name = 'Enemy';
						t.report[reportId].side0AllianceName = '';
						t.report[reportId].side0CityName = '';
					} else { // Player
						t.report[reportId].side0Name = rslt.arPlayerNames['p'+rpt.side0PlayerId];
						if (rpt.side0AllianceId > 0)
							t.report[reportId].side0AllianceName = rslt.arAllianceNames['a'+rpt.side0AllianceId];
						else
							t.report[reportId].side0AllianceName = 'unaligned';
						if (rpt.side0CityId > 0)
							t.report[reportId].side0CityName = rslt.arCityNames['c'+rpt.side0CityId];
						else
							t.report[reportId].side0CityName = 'none';
					}
					t.report[reportId].side0AllianceId = parseInt(rpt.side0AllianceId);
					t.report[reportId].side0XCoord = rpt.side0XCoord;
					t.report[reportId].side0YCoord = rpt.side0YCoord;
					if (parseInt(rpt.side0TileType) == 10)
						t.report[reportId].side0TileTypeText='Grass';
					else if (parseInt(rpt.side0TileType) == 11)
						t.report[reportId].side0TileTypeText='Lake';
					else if (parseInt(rpt.side0TileType) == 20)
						t.report[reportId].side0TileTypeText='Woods';
					else if (parseInt(rpt.side0TileType) == 30)
						t.report[reportId].side0TileTypeText='Hills';
					else if (parseInt(rpt.side0TileType) == 40)
						t.report[reportId].side0TileTypeText='Mount';
					else if (parseInt(rpt.side0TileType) == 50)
						t.report[reportId].side0TileTypeText='Plain';
					else if (parseInt(rpt.side0CityId) ==0)
						t.report[reportId].side0TileTypeText='Barb';
					else
						t.report[reportId].side0TileTypeText='City';
					t.report[reportId].side0TileTypeLevel = t.report[reportId].side0TileTypeText + ' ' + rpt.side0TileLevel;
					t.report[reportId].side0TileType = rpt.side0TileType;
					t.report[reportId].side0TileLevel = rpt.side0TileLevel;
					// Miscellaneous
					t.report[reportId].page = page;
					t.report[reportId].reportUnixTime = rpt.reportUnixTime;
					if (rpt.side0AllianceId == parseInt(getMyAlliance()[0]))
						t.report[reportId].sideId = 0;
					else if (rpt.side1AllianceId == parseInt(getMyAlliance()[0])) {
						t.report[reportId].sideId = 1;
					} else { // if we're here then this is a player report from when they were in another alliance
						if (rpt.side0PlayerId == getMyUserId())
							t.report[reportId].sideId = 0;
						else if (rpt.side1PlayerId == getMyUserId())
							t.report[reportId].sideId = 1;
						else // shouldn't get here but we'll catch it if the report body is requested
							t.report[reportId].sideId = -1;
					}
					if (rpt.marchType == 0)
						t.report[reportId].marchName = 'Desertion';
					else if (rpt.marchType == 1)
						t.report[reportId].marchName = 'Transport';
					else if (rpt.marchType == 2)
						t.report[reportId].marchName = 'Reinforce';
					else if (rpt.marchType == 3) {
						if (t.report[reportId].sideId == 0)
							t.report[reportId].marchName = 'Anti-Scout';
						else
							t.report[reportId].marchName = 'Scout';
					} else if (rpt.marchType == 4) {
						if (t.report[reportId].sideId == 0)
							t.report[reportId].marchName = 'Defend';
						else
							t.report[reportId].marchName = 'Attack';
					} else
						t.report[reportId].marchName = '?';
					t.data.push ({
						reportId: reportId,
					});
				}
			}
			if (parseInt(page)+1 <= t.maxPages && t.searchRunning) {
				document.getElementById("idRptStatus").innerHTML = 'Searching page ' + (parseInt(page)+1) + ' of ' + t.maxPages;
				t.getRpt(parseInt(page)+1);
				if (t.data.length > 0)
					t.DisplayRpt();
			} else if (page)
				t.stopSearch ('Done!');
		}
	},

	DisplayMail: function (){
		var t = Tabs.Rpt;
		var results = document.getElementById("idRptResultsDiv");
		if(!t.data.length) {
			results.innerHTML = '<center>None found</center>';
			return;
		}
		reportsSearched = t.data.length;
		reportsFound = 0;
		t.content = '';
		for (var i=0; i<reportsSearched;i++) {
			var rpt = t.data[i];
			if ((t.what == '' || (rpt.subject.search(t.what, "i") != -1) || (rpt.displayName.search(t.what, "i") != -1))
				&& (t.whatNot == '' || ((rpt.subject.search(t.whatNot, "i") == -1) && (rpt.displayName.search(t.whatNot, "i") == -1)))) {
				reportsFound++;
				if (reportsFound == 1)
					t.content += '<center><table><thead><th>P</th><th>Date</th><th>From</th><th>Subject</th></thead><tbody>';
				t.content += '<tr><td align=right>'+rpt.page+'</td><td>'+rpt.dateSent+'</td><td>'+rpt.displayName+'</td>';
				t.content += '<td><A><SPAN onclick="getmsg('+ rpt.messageId +')">' + rpt.subject + '</SPAN></a></td></tr>';
			}
		}
		if (reportsFound > 1)
			t.content += '</tbody></table></center>';
		if (reportsFound == 0 && reportsSearched > 0)
			t.content = '<center>None found</center>';
		results.innerHTML = t.content;
		document.getElementById("idRptSearched").innerHTML = '&nbsp;Searched: ' + reportsSearched;
		document.getElementById("idRptFound").innerHTML = 'Found: ' + reportsFound;
	},

	getMailBody: function(ID,dataI){
		var t = Tabs.Rpt;
		var params = unsafeWindow.Object.clone(unsafeWindow.g_ajaxparams);
		params.messageId=ID;
		params.requestType="GET_MESSAGE_FOR_ID";

		new MyAjaxRequest(unsafeWindow.g_ajaxpath + "ajax/getEmail.php" + unsafeWindow.g_ajaxsuffix, {
			method: "post",
			parameters: params,
			onSuccess: function (rslt) {
				if (rslt.ok)
					t.displayMailBody(rslt.messageBody);
			},
			onFailure: function () {},
		}, false);
	},

	displayMailBody: function (messageBody) {
		var t = Tabs.Rpt;
		var popMsg = null;
		t.popMsg = new CPopup('pbMailBody', 0, 0, 670, 600, true, function() {clearTimeout (1000);});
		t.popMsg.centerMe (mainPop.getMainDiv());
		var m = '<DIV style="max-height:565px; height:565px; overflow-y:scroll">';
		m+= messageBody + '</div>';
		t.popMsg.getMainDiv().innerHTML = m;
		t.popMsg.getTopDiv().innerHTML = '<DIV align=center><B>Message</B></DIV>';
		t.popMsg.show(true);
	},

	DisplayRpt: function (){
		var t = Tabs.Rpt;
		var results = document.getElementById("idRptResultsDiv");
		if(!t.data.length) {
			results.innerHTML = '<center>None found</center>';
			return;
		}
		var myAllianceId = parseInt(getMyAlliance()[0]);
		reportsSearched = t.data.length;
		reportsFound = 0;
		t.content = '';
		for (var i=0; i<reportsSearched;i++) {
			var reportId = t.data[i].reportId;
			var rpt = t.report[reportId];
			if ((rpt.side0Name=='undefined') && (rpt.marchName != 'Desertion'))
				continue;
			if ((((myAllianceId == parseInt(rpt.side1AllianceId) && Options.arAttacker != 'Them')
				|| (myAllianceId != parseInt(rpt.side1AllianceId) && Options.arAttacker != 'Us')
				|| Options.arAttacker == 'Both')
				&& ((myAllianceId == parseInt(rpt.side0AllianceId) && Options.arTarget != 'Them')
				|| (myAllianceId != parseInt(rpt.side0AllianceId) && Options.arTarget != 'Us')
				|| Options.arTarget == 'Both')
				&& ((Options.arAttack && (rpt.marchName == 'Attack' || rpt.marchName == 'Defend'))
				|| (Options.arScout && (rpt.marchName == 'Scout' || rpt.marchName == 'Anti-Scout'))
				|| (Options.arReinforce && rpt.marchName == 'Reinforce')
				|| (Options.arTransport && rpt.marchName == 'Transport')))
				|| (rpt.marchName == 'Desertion')) {
				if (((t.what == ''
					|| (rpt.side1Name.search(t.what, "i") != -1)
					|| (rpt.side1AllianceName.search(t.what, "i") != -1)
					|| (rpt.side0Name.search(t.what, "i") != -1)
					|| (rpt.side0AllianceName.search(t.what, "i") != -1)
					|| (rpt.side0TileTypeText.search(t.what, "i") != -1))
					&& (t.whatNot == ''
					|| ((rpt.side1Name.search(t.whatNot, "i") == -1)
					&& (rpt.side1AllianceName.search(t.whatNot, "i") == -1)
					&& (rpt.side0Name.search(t.whatNot, "i") == -1)
					&& (rpt.side0AllianceName.search(t.whatNot, "i") == -1)
					&& (rpt.side0TileTypeText.search(t.whatNot, "i") == -1))))
					|| (rpt.marchName == 'Desertion')) {
					reportsFound++;
					if (reportsFound == 1) {
						if ((Options.enableReportNumber) || (true))
							t.content += '<center><table><thead><th>P</th><th>Date</th><th>Report</th><th>Attacker</th><th>From</th>';
						else
							t.content += '<center><table><thead><th>P</th><th>Date</th><th>Attacker</th><th>From</th>';
						if (Options.arAttacker != 'Us')
							t.content += '<th>Alliance</th>';
						t.content += '<th>Action</th><th>Target</th><th>Type</th><th>At</th>';
						if (Options.arTarget != 'Us')
							t.content += '<th>Alliance</th>';
						t.content += '<th>Dist</th><th>Nearest</th></thead><tbody>';
					}
					var closestDist=999999;
					var closestLoc=null;
					var closestNum=1;
					for (var c=0; c<Cities.numCities; c++){
						var city = Cities.cities[c];
						city.x +','+ city.y
						var dist=distance(city.x,city.y,rpt.side0XCoord,rpt.side0YCoord);
						if(dist<closestDist) {
							closestDist=dist;
							closestLoc=city.x +','+ city.y;
							closestNum=c+1;
						}
					}
					if (rpt.marchName == 'Anti-Scout' || rpt.marchName == 'Defend')
					 style=' style="background-color:#EF9999;"';
					else if (rpt.marchName == 'Reinforce')
					 style=' style="background-color:#99EF99;"';
					else
					 style="";
					t.content += '<tr><td align=right '+style+'>'+rpt.page+'</td><td '+style+'>'+formatUnixTime(rpt.reportUnixTime,'24hour')+'</td>';
					if ((Options.enableReportNumber) || (true))
						t.content += '<td '+style+'>' + reportId + '</td>';
					if (rpt.marchName == 'Desertion') {
						t.content += '<td '+style+'></td><td '+style+'></td>';
						if (Options.arAttacker != 'Us')
							t.content += '<td '+style+'></td>';
						t.content += '<td '+style+'>'+rpt.marchName+'</td><td '+style+'></td><td '+style+'></td><td '+style+'></td>';
						if (Options.arAttacker != 'Us')
							t.content += '<td '+style+'></td>';
						t.content += '<td '+style+'></td><td '+style+'></td>';
						} else {
						t.content += '<td '+style+'>'+rpt.side1Name+'</td><td align=center '+style+'><A onclick="ptGotoMap('+ rpt.side1XCoord +','+ rpt.side1YCoord +')">'+ rpt.side1XCoord +','+ rpt.side1YCoord +'</a></td>';
						if (Options.arAttacker != 'Us')
							t.content += '<td '+style+'>'+rpt.side1AllianceName+'</td>';
							if (REPORT_Detail) t.content += '<td '+style+'><A><SPAN onclick="getReport('+ reportId+',0)">'+rpt.marchName+'</span></a></td>';  //djf report
							else t.content += '<td '+style+'><A><SPAN onclick="getReport('+ reportId+')">'+rpt.marchName+'</span></a></td>';
						t.content += '<td '+style+'>'+rpt.side0Name+'</td><td>'+rpt.side0TileTypeLevel+'</td>';
						t.content += '<td align=center '+style+'><A onclick="ptGotoMap('+ rpt.side0XCoord +','+ rpt.side0YCoord +')">'+ rpt.side0XCoord +','+ rpt.side0YCoord +'</a></td>';
						if (Options.arTarget != 'Us')
							t.content += '<td '+style+'>'+rpt.side0AllianceName+'</td>';
						t.content += '<td align=right '+style+'>'+Math.floor(closestDist)+'</td><td align=center '+style+'><A onclick=\"ptGotoCity(' + closestNum + ')\">' + closestLoc + '</a></td></tr>';
					}
				}
			}
		}
		if (reportsFound > 1)
			t.content += '</tbody></table></center>';
		if (reportsFound == 0 && reportsSearched > 0)
			t.content = '<center>None found</center>';
		results.innerHTML = t.content;
		document.getElementById("idRptSearched").innerHTML = '&nbsp;Searched: ' + reportsSearched;
		document.getElementById("idRptFound").innerHTML = 'Found: ' + reportsFound;
	},

	getReportBody: function(reportId){  //djf report
		logit("getReportBody called="+reportId);
		var t = Tabs.Rpt;
		var params = unsafeWindow.Object.clone(unsafeWindow.g_ajaxparams);
		//params.pf=0;
		params.rid=reportId;
		params.side=t.report[reportId].sideId;
		if (params.side > -1) {
			new MyAjaxRequest(unsafeWindow.g_ajaxpath + "ajax/fetchReport.php" + unsafeWindow.g_ajaxsuffix, {
				method: "post",
				parameters: params,
				onSuccess: function (rslt) {
					t.displayReportBody(rslt,reportId);
				},
				onFailure: function (rslt) {},
			}, false);
		} else {
			unsafeWindow.alert ('Could not determine which side of the report to view - please send details to the developer');
		}
	},

	displayReportBody: function (rslt, reportId) {
		var t = Tabs.Rpt;
		var popReport = null;
		var rpt = t.report[reportId];
		var m = '';
		var unitImg = [];
		for (var i=1;i<14;i++)
			unitImg[i] = '<img src=http://cdn1.kingdomsofcamelot.com/fb/e2/src/img/units/unit_'+i+'_30.png></TD><TD>' + unsafeWindow.unitcost['unt'+i][0];
		unitImg[53] = '<img src=http://cdn1.kingdomsofcamelot.com/fb/e2/src/img/units/unit_53_30.png></TD><TD>Crossbows';
		unitImg[55] = '<img src=http://cdn1.kingdomsofcamelot.com/fb/e2/src/img/units/unit_55_30.png></TD><TD>Trebuchet';
		unitImg[60] = '<img src=http://cdn1.kingdomsofcamelot.com/fb/e2/src/img/units/unit_60_30.png></TD><TD>Trap';
		unitImg[61] = '<img src=http://cdn1.kingdomsofcamelot.com/fb/e2/src/img/units/unit_61_30.png></TD><TD>Caltrops';
		unitImg[62] = '<img src=http://cdn1.kingdomsofcamelot.com/fb/e2/src/img/units/unit_62_30.png></TD><TD>Spiked Barrier';
		goldImg = '<img src=http://cdn1.kingdomsofcamelot.com/fb/e2/src/img/gold_30.png></TD><TD>Gold';
		foodImg = '<img src=http://cdn1.kingdomsofcamelot.com/fb/e2/src/img/food_30.png></TD><TD>Food';
		woodImg = '<img src=http://cdn1.kingdomsofcamelot.com/fb/e2/src/img/wood_30.png></TD><TD>Wood';
		stoneImg = '<img src=http://cdn1.kingdomsofcamelot.com/fb/e2/src/img/stone_30.png></TD><TD>Stone';
		oreImg = '<img src=http://cdn1.kingdomsofcamelot.com/fb/e2/src/img/iron_30.png></TD><TD>Ore';

		function buildHeader () {
			var h='<TABLE class=ptTab width=100%>';
			h+='<TR valign=top><TD align=left width=10%><B>';
			if (rpt.marchName == 'Anti-Scout' || rpt.marchName == 'Scout')
				h+=rpt.marchName+'ing at';
			else if (rpt.marchName == 'Attack' || rpt.marchName == 'Defend')
				h+='Battle at ';
			else if (rpt.marchName == 'Reinforce' || rpt.marchName == 'Transport')
				h+=rpt.marchName+' from<BR />'+rpt.marchName+' to</B>';

			if (rpt.side0TileTypeText == 'Barb')
				h+=' Barbarian Camp Level ' + rpt.side0TileLevel;
			else if (rpt.side0TileTypeText != 'City')
				h+=' '+rpt.side0TileTypeText+' Level '+ rpt.side0TileLevel+' ';
			h+='</B></TD>';

			if (rpt.marchName == 'Reinforce' || rpt.marchName == 'Transport') {
				h+='<TD align=left width=1%>';
				if (Seed.player.name != rpt.side1Name)
					h+=rpt.side1Name;
				if (Seed.player.name != rpt.side0Name)
					h+='<BR />'+rpt.side0Name;
				h+='</TD>';
			}
			h+='<TD align=left width=5%>';

			if (rpt.marchName == 'Reinforce' || rpt.marchName == 'Transport')
				h+='(<A onclick="ptGotoMap('+ rpt.side1XCoord +','+ rpt.side1YCoord +')">'+ rpt.side1XCoord +','+ rpt.side1YCoord +'</a>)<BR />';
			h+='(<A onclick="ptGotoMap('+ rpt.side0XCoord +','+ rpt.side0YCoord +')">'+ rpt.side0XCoord +','+ rpt.side0YCoord +'</a>)</TD>';

			if (rpt.side0TileTypeText != 'City' && rpt.side0TileTypeText != 'Barb' && rpt.marchName == 'Attack') {
				if (rslt['conquered']==1)
					h+='<TD><FONT color="#CC0000"><B>Conquered</B></font></td>';
				else if (rslt['conquered']==0)
					h+='<TD><FONT color="#66CC33"><B>Secured</B></font></td>';
			} else if (rpt.marchName == 'Reinforce' || rpt.marchName == 'Transport') {
				h+='<TD align=left width=5%>'+rpt.side1CityName+'<BR />';
				if (rpt.side0CityName != '')
					h+=rpt.side0CityName+'</TD>';
				else
					h+=rpt.side0TileTypeText+' Level '+ rpt.side0TileLevel+'</TD>';
			}

			h+='<TD align=right>' + formatUnixTime(rpt.reportUnixTime,'24hour') + '<BR />Report No: ' + reportId + '</TD></TR></TABLE>';
			return h;
		}

		function handleunts () { // Troops sent to Reinforce or troops found on a Scout
			var hunts = '', th = '', tc = '', tf = '';
			if (rslt['unts']) {
				if (rpt.marchName == 'Reinforce')
					th='<TABLE class=ptTab><TR><TH colspan=3 align=left>Troops Reinforced</TH></TR>';
				else if (rslt['unts'])
					th='<TABLE class=ptTab><TR><TH colspan=3 align=left>Troops Found</TH></TR>';
				for (var i=1;i<14;i++)
					if (rslt['unts']['u'+i])
						tc+='<TR><TD>' + unitImg[i] + '</TD><TD align=right>'+addCommas(rslt['unts']['u'+i])+'</TD></TR>';
				tf='</TABLE>';
			}
			if (tc != '')
				hunts = th + tc + tf;
			return hunts;
		}

		function handlersc () { // Resources brought with reinforcements or found on a Scout
			var hrsc = '', th = '', tc = '', tf = '';
			if (rslt['rsc']) {
				if (rslt['rsc']['r1'] > 0 || rslt['rsc']['r2'] > 0 || rslt['rsc']['r3'] > 0 || rslt['rsc']['r4'] > 0) {
					if (rpt.marchName == 'Reinforce')
						th='<TABLE class=ptTab><TR><TH colspan=3 align=left>Goodies Brought</TH></TR>';
					else {
						th='<TABLE class=ptTab><TR><TH colspan=3 align=left>Goodies Found</TH></TR>';
						if (rslt['gld'] > 0)
							tc+='<TR><TD>'+goldImg+'</TD><TD align=right>'+addCommasInt(rslt['gld'])+'</TD></TR>';
					}
					if (rslt['rsc']['r1'] > 0)
						tc+='<TR><TD>'+foodImg+'</TD><TD align=right>'+addCommasInt(rslt['rsc']['r1'])+'</TD></TR>';
					if (rslt['rsc']['r2'] > 0)
						tc+='<TR><TD>'+woodImg+'</TD><TD align=right>'+addCommasInt(rslt['rsc']['r2'])+'</TD></TR>';
					if (rslt['rsc']['r3'] > 0)
						tc+='<TR><TD>'+stoneImg+'</TD><TD align=right>'+addCommasInt(rslt['rsc']['r3'])+'</TD></TR>';
					if (rslt['rsc']['r4'] > 0)
						tc+='<TR><TD>'+oreImg+'</TD><TD align=right>'+addCommasInt(rslt['rsc']['r4'])+'</TD></TR>';
					tf='</TABLE>';
				}
			}
			if (tc != '')
				hrsc = th + tc + tf;
			return hrsc;
		}

		function handlefrt () { // Fortifications found on a Scout
			var hfrt = '', th = '', tc = '', tf = '';
			if (rslt['frt']) {
				if (rslt['frt']) {
					th='<TABLE class=ptTab><TR><TH colspan=3 align=left>Defenses Found</TH></TR>';
					if (rslt['frt']['f53'])
						tc+='<TR><TD>' + unitImg[53] + '</TD><TD align=right>'+addCommas(rslt['frt']['f53'])+'</TD></TR>';
					if (rslt['frt']['f55'])
						tc+='<TR><TD>' + unitImg[55] + '</TD><TD align=right>'+addCommas(rslt['frt']['f55'])+'</TD></TR>';
					if (rslt['frt']['f60'])
						tc+='<TR><TD>' + unitImg[60] + '</TD><TD align=right>'+addCommas(rslt['frt']['f60'])+'</TD></TR>';
					if (rslt['frt']['f61'])
						tc+='<TR><TD>' + unitImg[61] + '</TD><TD align=right>'+addCommas(rslt['frt']['f61'])+'</TD></TR>';
					if (rslt['frt']['f62'])
						tc+='<TR><TD>' + unitImg[62] + '</TD><TD align=right>'+addCommas(rslt['frt']['f62'])+'</TD></TR>';
					tf='</TABLE>';
				}
			}
			if (tc != '')
				hfrt = th + tc + tf;
			return hfrt;
		}

		function handleblds (bType) {
		  if(rslt['blds']){
			var blds = rslt['blds']['b'+bType]; b = '<TR><TD>'; arField = [], firstbld = true;
			if (bType == 1)
				b+='Farm';
			else if (bType == 2)
				b+='Sawmill';
			else if (bType == 3)
				b+='Quarry';
			else if (bType == 4)
				b+='Mine';
			b+='</TD><TD>';
			for (var i=1; i<12; i++)
				arField[i]=0;
			for (var i=0; i < blds.length; i++)
				arField[blds[i]]++
			for (var i=11; i>0; i--) {
				if (arField[i] > 0) {
					if (firstbld)
						firstbld = false;
					else
						b+=', ';
					if (arField[i] > 1)
						b+=arField[i] + ' x ';
					b+=' ' + i;
				}
			}
			b+='</TD></TR>';
			return b;
		  }
		}

		if (rpt.marchName == 'Reinforce') {
			t.popReport = new CPopup('pbShowRein', 0, 0, 525, 340, true, function() {clearTimeout (1000);});
			m+= '<DIV style="height:285px">';
		} else if (rpt.marchName == 'Transport') {
			t.popReport = new CPopup('pbShowTrans', 0, 0, 525, 240, true, function() {clearTimeout (1000);});
			m+= '<DIV style="height:185px">';
		} else if (rpt.marchName == 'Scout' && rslt['winner']==1 && rpt.sideId==1){
			t.popReport = new CPopup('pbShowOther', 0, 0, 550, 740, true, function() {clearTimeout (1000);});
			m+= '<DIV style="max-height:705px; height:705px; overflow-y:scroll">';
		} else {
			t.popReport = new CPopup('pbShowOther', 0, 0, 550, 680, true, function() {clearTimeout (1000);});
			m+= '<DIV style="max-height:645px; height:645px; overflow-y:scroll">';
		}
		t.popReport.centerMe (mainPop.getMainDiv());

		m+=buildHeader();

		if (rpt.marchName == 'Transport') { // Transport
			m+='<TABLE class=ptTab>'; // Only transports have these in rslt, so handle them here
			if (parseInt(rslt['gold']) > 0)
				m+='<TR><TD>'+goldImg+'</TD><TD align=right>'+addCommas(rslt['gold'])+'</TD></TR>';
			if (parseInt(rslt['resource1']) > 0)
				m+='<TR><TD>'+foodImg+'</TD><TD align=right>'+addCommas(rslt['resource1'])+'</TD></TR>';
			if (parseInt(rslt['resource2']) > 0)
				m+='<TR><TD>'+woodImg+'</TD><TD align=right>'+addCommas(rslt['resource2'])+'</TD></TR>';
			if (parseInt(rslt['resource3']) > 0)
				m+='<TR><TD>'+stoneImg+'</TD><TD align=right>'+addCommas(rslt['resource3'])+'</TD></TR>';
			if (parseInt(rslt['resource4']) > 0)
				m+='<TR><TD>'+oreImg+'</TD><TD align=right>'+addCommas(rslt['resource4'])+'</TD></TR>';
			m+='</TABLE>';
		}

		m+='<TABLE class=ptTab>';
		if ((rslt['winner']==1 && rpt.sideId==0) || (rslt['winner']==0 && rpt.sideId==1)) {
			if (rpt.marchName == 'Scout')
				m+='<TR><TD><FONT color="#CC0000"><B>Scouting Failed</B></font></TD></TR>';
			else
				m+='<TR><TD><FONT color="#CC0000"><B>You were defeated</B></font></TD></TR>';
		}
		if (rslt['winner']==0 && rpt.sideId==0)
			m+='<TR><TD><FONT color="#66CC33"><B>You defended successfully!</B></font></TD></TR>';
		if (rslt['winner']==1 && rpt.sideId==1) {
			if (rpt.marchName == 'Scout')
				m+='<TR><TD><FONT color="#66CC33"><B>Scouting Report</B></font></TD></TR>';
			else
				m+='<TR><TD><FONT color="#66CC33"><B>You were victorious!</B></font></TD></TR>';
		}

		if (rslt['wall']) {
			if (rslt['wall'] == 100)
				m+='<TR><TD>Attackers breached the walls.</TD></TR>';
			else
				m+='<TR><TD>Attackers did not breach the walls. The walls are '+rslt['wall']+'% damaged</TD></TR>';
		}
		m+= '</TABLE><BR />';

		if (rslt['loot']) {
			m+='<TABLE class=ptTab>';
			if (rslt['loot'][0] > 0)
				m+='<TR><TD>'+goldImg+'</TD><TD align=right>'+addCommas(rslt['loot'][0])+'</TD></TR>';
			if (rslt['loot'][1] > 0)
				m+='<TR><TD>'+foodImg+'</TD><TD align=right>'+addCommas(rslt['loot'][1])+'</TD></TR>';
			if (rslt['loot'][2] > 0)
				m+='<TR><TD>'+woodImg+'</TD><TD align=right>'+addCommas(rslt['loot'][2])+'</TD></TR>';
			if (rslt['loot'][3] > 0)
				m+='<TR><TD>'+stoneImg+'</TD><TD align=right>'+addCommas(rslt['loot'][3])+'</TD></TR>';
			if (rslt['loot'][4] > 0)
				m+='<TR><TD>'+oreImg+'</TD><TD align=right>'+addCommas(rslt['loot'][4])+'</TD></TR>';
			if (rslt['loot'][5]) {
				for (var crest=1101; crest < 1116; crest++) {
					if (rslt['loot'][5][crest] == 1)
						m+='<TR><TD><img width=30 src=http://cdn1.kingdomsofcamelot.com/fb/e2/src/img/items/70/' + crest + '.png></TD><TD colspan=2>' + crestname[crest] + '</TD></TR>';
				}
			}
			m+='</TABLE><BR />';
		}

		if (rpt.marchName == 'Reinforce') {
			m+=handleunts();
			m+=handlersc();
		}

		if (rpt.marchName == 'Scout' && rslt['winner']==1) {
			m+='<TABLE class=ptTab width=100%><TR><TD width=50% align=left valign=top>';
			m+=handleunts();
			m+=handlefrt();
			m+=handlersc();
			m+='</TD><TD width=50% align=left valign=top>';
			m+='<TABLE class=ptTab width=100%>';
			if (rslt['lstlgn']) {
				if (!rslt['lstlgn'])
					m+='<TR><TD>Last Login: Not recorded</TD></TR>';
				else
					m+='<TR><TD>Last Login: ' + formatUnixTime(rslt['lstlgn']) + '</TD></TR>';
			}
			m+='<TR><TD>Marshall Combat: ';
			if (rslt['knt'])
				m+=rslt['knt']['cbt'];
			else
				m+='None';
			m+='</TD></TR>';
			if (rslt['pop'])
				m+='<TR><TD>Population: ' + addCommas(rslt['pop']) + '</TD></TR>';
			if (rslt['hap'])
				m+='<TR><TD>Happiness: ' + addCommas(rslt['hap']) + '</TD></TR></TABLE>';
			if (rslt['blds']['b1'] || rslt['blds']['b2'] || rslt['blds']['b3'] || rslt['blds']['b4']) {
				m+='<TABLE class=ptTab><TR><TH colspan=2 align=left>Fields</TH></TR>';
				for (var i=1; i<5; i++)
					if (rslt['blds']['b'+i])
						m+=handleblds(i);
				m+='</TABLE>';
			}
			if (rslt['tch']) {
				m+='<TABLE class=ptTab><TR><TH colspan=2 align=left>Research</TH></TR>';
				for (var tl in rslt.tch)
					tid = /[0-9]/.exec(tl);
					m+='</TD></TR><TR><TD>'+uW.techcost['tch'+tid[0]][0]+'</TD><TD align=right>' + rslt.tch[tl] + '</TD></TR>';
				m+='</TABLE>';
			}
			m+='</TD></TR></TABLE>';
		}

		if (rslt['fght']){ // not Reinforce or Transport, so we have a table with 2 columns: 1 for Attackers, 1 for Defenders
			m+='<TABLE class=ptTab width=100%><TR><TD width=50% align=left valign=top>';
			m+='<TABLE class=ptTab width=100%>';
			m+='<TR><TD colspan=4><B>Attackers</B> ('+rpt.side1Name+')';
			if (rslt['winner']==1)
				m+='<FONT color="#CC0000"><B> Winner</B></FONT>';
			m+='</TD></TR>';
			if (rpt.marchName == 'Attack' || rpt.marchName == 'Defend')
				m+='<TR><TD colspan=4>Knight Combat Skill: ' + rslt['s1KCombatLv'] + '</TD></TR>';
			m+='<TR><TD colspan=4>Attack Boosted: ' + 100*rslt['s1atkBoost'] + '%</TD></TR>';
			m+='<TR><TD colspan=4>Defense Boosted: ' + 100*rslt['s1defBoost'] + '%</TD></TR>';
			m+='<TR><TD colspan=4>(<A onclick="ptGotoMap('+ rpt.side1XCoord +','+ rpt.side1YCoord +')">'+ rpt.side1XCoord +','+ rpt.side1YCoord +'</a>) ' + rpt.side1CityName + '</TD></TR>';
			if (rslt['fght']["s1"] != undefined) {
				m+='<TR><TH></TH><TH align=left>Troops</TH><TH align=right>Fought</TH><TH align=right>Survived</TH></TR>';
				for (var i=1;i<14;i++) {
					if (rslt['fght']["s1"]['u'+i] != undefined) {
						if (rslt['fght']["s1"]['u'+i][0] > rslt['fght']["s1"]['u'+i][1]) {
							m+='<TR><TD>' + unitImg[i] + '</td>';
							m+='<TD align=right>'+addCommas(rslt['fght']["s1"]['u'+i][0])+'</td>';
							m+='<TD align=right><FONT color="#CC0000">'+addCommas(rslt['fght']["s1"]['u'+i][1])+'</FONT></td></tr>';
						} else {
							m+='<TR><TD>' + unitImg[i] + '</td>';
							m+='<TD align=right>'+addCommas(rslt['fght']["s1"]['u'+i][0])+'</td>';
							m+='<TD align=right>'+addCommas(rslt['fght']["s1"]['u'+i][1])+'</td></tr>';
						}
					}
				}
			}
			m+='</TABLE></TD><TD width=50% align=right valign=top>';
			m+='<TABLE class=ptTab width=100%>';
			m+='<TR><TD colspan=4><B>Defenders</B> ('+rpt.side0Name+')';
			if (rslt['winner']==0)
				m+='<FONT color="#CC0000"><B> Winner</B></FONT>';
			m+='</TD></TR>';
			if (rpt.marchName == 'Attack' || rpt.marchName == 'Defend')
				m+='<TR><TD colspan=4>Knight Combat Skill: ' + rslt['s0KCombatLv'] + '</TD></TR>';
			if (rslt['s0atkBoost'] !== undefined)
				m+='<TR><TD colspan=4>Attack Boosted: ' + 100*rslt['s0atkBoost'] + '%</TD></TR>';
			else
				m+='<TR><TD colspan=4>&nbsp;</TD></TR>';
			if (rslt['s0defBoost'] !== undefined)
				m+='<TR><TD colspan=4>Defense Boosted: ' + rslt['s0defBoost'] + '%</TD></TR>';
			else
				m+='<TR><TD colspan=4>&nbsp;</TD></TR>';
			m+='<TR><TD colspan=4>Rounds: ' + rslt['rnds'] + '</TD></TR>';
			if (rslt['fght']["s0"] != undefined) {
				m+='<TR><TH></TH><TH align=left>Troops</TH><TH align=right>Fought</TH><TH align=right>Survived</TH></TR>';
				for (var i=1;i<14;i++) {
					if (rslt['fght']["s0"]['u'+i] != undefined) {
						if (rslt['fght']["s0"]['u'+i][0] > rslt['fght']["s0"]['u'+i][1]) {
							m+='<TR><TD>' + unitImg[i] + '</td>';
							m+='<TD align=right>'+addCommas(rslt['fght']["s0"]['u'+i][0])+'</td>';
							m+='<TD align=right><FONT color="#CC0000">'+addCommas(rslt['fght']["s0"]['u'+i][1])+'</FONT></td></tr>';
						} else {
							m+='<TR><TD>' + unitImg[i] + '</td>';
							m+='<TD align=right>'+addCommas(rslt['fght']["s0"]['u'+i][0])+'</td>';
							m+='<TD align=right>'+addCommas(rslt['fght']["s0"]['u'+i][1])+'</td></tr>';
						}
					}
				}
				for (var i=53;i<=55;i++) {
					if (rslt['fght']["s0"]['f'+i] != undefined) {
						if (rslt['fght']["s0"]['f'+i][0] > rslt['fght']["s0"]['f'+i][1]) {
							m+='<TR><TD>' + unitImg[i] + '</td>';
							m+='<TD align=right>'+addCommas(rslt['fght']["s0"]['f'+i][0])+'</td>';
							m+='<TD align=right><FONT color="#CC0000">'+addCommas(rslt['fght']["s0"]['f'+i][1])+'</font></td></tr>';
						} else {
							m+='<TR><TD>' + unitImg[i] + '</td>';
							m+='<TD align=right>'+addCommas(rslt['fght']["s0"]['f'+i][0])+'</td>';
							m+='<TD align=right>'+addCommas(rslt['fght']["s0"]['f'+i][1])+'</td></tr>';
						}
					}
				}
				for (var i=60;i<=63;i++) {
					if (rslt['fght']["s0"]['f'+i] != undefined) {
						if (rslt['fght']["s0"]['f'+i][0] > rslt['fght']["s0"]['f'+i][1]) {
							m+='<TR><TD>' + unitImg[i] + '</td>';
							m+='<TD align=right>'+addCommas(rslt['fght']["s0"]['f'+i][0])+'</td>';
							m+='<TD align=right><FONT color="#CC0000">'+addCommas(rslt['fght']["s0"]['f'+i][1])+'</font></td></tr>';
						} else {
							m+='<TR><TD>' + unitImg[i] + '</td>';
							m+='<TD align=right>'+addCommas(rslt['fght']["s0"]['f'+i][0])+'</td>';
							m+='<TD align=right>'+addCommas(rslt['fght']["s0"]['f'+i][1])+'</td></tr>';
						}
					}
				}
			} else
				m+='<TR><TD>No Troops Defended</TD></TR>';
			m+='</TABLE></TD></TR></TABLE>';
		}

		m+='</DIV>';
		t.popReport.getMainDiv().innerHTML = m;
		t.popReport.getTopDiv().innerHTML = '<DIV align=center><B>'+rpt.marchName+' Report</B></DIV>';
		t.popReport.show(true);
	},

	show: function (){
	},

	hide: function (){
	},
};

/*********************************** Alliance TAB ***********************************/
Tabs.Alliance = {
  tabOrder : 120,
  tabLabel : uW.g_js_strings.commonstr.alliance,
  myDiv : null,
  alliancemembers:[],
  number:0,
  totalmembers:0,
  error:false,
  sortType: 1,
  sortBy: 'Name',
  
  init : function (div){    
    var t = Tabs.Alliance;      
    t.myDiv = div;
     t.myDiv.style.overflowY = 'scroll';
     t.myDiv.style.maxHeight = '730px';
     t.totalmembers=0;
     t.alliancemembers=[];	
     
     uW.getdetails = t.getMemberDetails;
    
    var m =  '<DIV class=ptstat>ALLIANCE FUNCTIONS</div><TABLE align=center cellpadding=1 cellspacing=0></table>';
    
	m += '<TD width = "100px" ; border:none"><a href="http://code.google.com/p/koc-power-tools/wiki/HowToAlliance" target="_blank">HELP</a></td></tr>';
    m +='<TABLE class=ptTab><TD width=200px>List Alliance Members</td><TD>Sort by: '+ htmlSelector({Name:'Name',Might:'Might',glory:'Glory',Cities:'Cities',Position:'Position',dip:'Days in Position',uid:'User Id',fbuid:'Facebook id'},null,'id=searchAlli') +'</td>';
    m += '<TD><INPUT id=alList type=submit value="List"></td>';
    m += '<TD id=progress></td>';
    m += '<TR><TD width=200px>Show alliance diplomaties</td><TD><INPUT id=aldiplo type=submit value="List diplomaties"></td></tr></table>';
    
    m+='<DIV class=ptstat>OVERVIEW</div><TABLE align=center cellpadding=1 cellspacing=0></table>';
    m += '<TABLE id=alOverviewTab class=alTab><TR align="center"></tr></table>';
    
    
    t.myDiv.innerHTML = m;
    
    document.getElementById('alList').addEventListener('click', function(){
    	if (!t.searching){
	    	t.totalmembers=0;
	    	t.alliancemembers=[];	
		    document.getElementById('alOverviewTab').innerHTML ="";
		    document.getElementById('progress').innerHTML ="";
		    document.getElementById('progress').innerHTML = uW.g_js_strings.commonstr.loadingddd;
		    document.getElementById('alList').disabled = true;
		    t.error=false;
		    t.fetchAllianceMemberPage();
		} 
    }, false);
    
    document.getElementById('searchAlli').addEventListener('click', function(){
        if (t.alliancemembers!="") {
        	document.getElementById('alOverviewTab').innerHTML ="";
        	t.paintMembers(); 
        }
    }, false);
    document.getElementById('aldiplo').addEventListener('click', function(){t.paintDiplomacy();}, false);  
    
     
  //window.addEventListener('unload', t.onUnload, false);
  },
  
  paintMembers: function(){
	var t = Tabs.Alliance;
	if(document.getElementById('searchAlli').value == t.sortBy){
		t.sortType *= -1;
	} else {
		t.sortType = 1;
	}
	t.sortBy = document.getElementById('searchAlli').value;
	var sortmembers = t.alliancemembers.sort(function(a, b){
		 var sortA = a[t.sortBy],
			 sortB = b[t.sortBy];
		 if(t.sortType > 0){
			 if(typeof(sortA) == 'number' && typeof(sortB) == 'number'){
				return sortA - sortB;
			 } else {
			  return sortA.localeCompare(sortB);
			 }
		 } else {
			 if(typeof(sortA) == 'number' && typeof(sortB) == 'number'){
				return sortB - sortA;
			 } else {
			  return sortB.localeCompare(sortA);
			 }
		 }
	});
	for (var y = (sortmembers.length-1); y >=0; y--) {
		t._addTab(sortmembers[y].Name,sortmembers[y].Might,sortmembers[y].LastLogin,sortmembers[y].Position,sortmembers[y].dip,sortmembers[y].uid,sortmembers[y].fbuid,sortmembers[y].Cities,sortmembers[y].avatarurl,sortmembers[y].glory,sortmembers[y].dateJoined);
		t.myDiv.style.overflowY = 'scroll';
	}
   t._addTabHeader();
 },
  
    _addTab: function(Name,Might,LastLogin,Position,dip,uid,fbuid,Cities,avatar,gloire,arrive){
	var t = Tabs.Alliance;
	var row = document.getElementById('alOverviewTab').insertRow(0);
		row.vAlign = 'top';
		row.insertCell(0).innerHTML ='<img width=25 src="'+ avatar +'">';
		row.insertCell(1).innerHTML ='<A target="_tab" href="http://www.facebook.com/profile.php?id='+ fbuid +'">profile</a>';
		row.insertCell(2).innerHTML = Name;
		var cell2 = row.insertCell(3); 
		cell2.width = "60" ;
		cell2.align = "right" ;
		cell2.vAlign = "top";
		cell2.innerHTML = addCommas(Might);
		var cell2 = row.insertCell(4);
		cell2.width = "60" ;
		cell2.align = "right" ;
		cell2.vAlign = "top";
		cell2.innerHTML = addCommas(gloire);
		row.insertCell(5).innerHTML = Cities;
		row.insertCell(6).innerHTML = officerId2String (Position);
		row.insertCell(7).innerHTML = dip;
		row.insertCell(8).innerHTML = LastLogin;
		row.insertCell(9).innerHTML = arrive; 
        },
          
    _addTabHeader: function() {
	var t = Tabs.Alliance;
	var row = document.getElementById('alOverviewTab').insertRow(0);
		row.vAlign = 'top';
		row.insertCell(0).innerHTML = "<u><b>Avatar</b></u>";
		row.insertCell(1).innerHTML = "<u><b>Facebook</b></u>";
		row.insertCell(2).innerHTML = "<u><b>Name</b></u>";
		row.insertCell(3).innerHTML = "<u><b>Might</b></u>";
		row.insertCell(4).innerHTML = "<u><b>Glory</b></u>";
		row.insertCell(5).innerHTML = "<u><b>Cities</b></u>";
		row.insertCell(6).innerHTML = "<u><b>Position</b></u>";
		row.insertCell(7).innerHTML = "<u><b>DIP</b></u>";
		row.insertCell(8).innerHTML = "<u><b>Last Login</b></u>";
		row.insertCell(9).innerHTML = "<u><b>Joined</b></u>";
      },
    
    
    paintDiplomacy : function () {
    	document.getElementById('alOverviewTab').innerHTML ="";
    	document.getElementById('progress').innerHTML ="";
    	var m= '<TR><TD colspan=4 style=\'background: #33CC66;\' align=center><B>Friendly: </b></td></tr>';
    	if (Seed.allianceDiplomacies['friendly'] == null) m+='<TR><TD>No Friendlies found...</td>';
    	else m += '<TABLE class=xtab><TR><TD>Alliance Name</td><TD>Members</td></tr>';
    	for (k in Seed.allianceDiplomacies['friendly']){
				m+='<TR><TD>'+Seed.allianceDiplomacies['friendly'][k]['allianceName']+'</td>';
				m+='<TD align=center>'+Seed.allianceDiplomacies['friendly'][k]['membersCount']+'</td>';
    	}
    	m+='<TR></tr></table>';
    	m+= '<TR><TD colspan=4 style=\'background: #CC0033;\' align=center><B>Hostile: </b></td></tr>';
    	if (Seed.allianceDiplomacies['hostile'] == null) m+='<TR><TD>No Hostiles found...</td>';
    	else m += '<TABLE class=xtab><TR><TD>Alliance Name</td><TD>Members</td></tr>';
    	for (k in Seed.allianceDiplomacies["hostile"]){
    		m+='<TR><TD>'+Seed.allianceDiplomacies["hostile"][k]['allianceName']+'</td>';
    		m+='<TD align=center>'+Seed.allianceDiplomacies["hostile"][k]['membersCount']+'</td>';
    	}
    	m+='<TR></tr></table>';
    	m+= '<TR><TD colspan=4 style=\'background: #FF6633;\' align=center><B>Friendly towards us: </b></td></tr>';
    	if (Seed.allianceDiplomacies['friendlyToYou'] == null) m+='<TR><TD>No Friendlies towards us found...</td>';
    	else m += '<TABLE class=xtab><TR><TD>Alliance Name</td><TD>Members</td></tr>';
    	for (k in Seed.allianceDiplomacies["friendlyToYou"]){
    		m+='<TR><TD>'+Seed.allianceDiplomacies["friendlyToYou"][k]['allianceName']+'</td>';
    		m+='<TD align=center>'+Seed.allianceDiplomacies["friendlyToYou"][k]['membersCount']+'</td>';
    	}
    	m+='<TR></tr></table>';
    	document.getElementById('alOverviewTab').innerHTML = m;
    },
    
  
    fetchAllianceMemberPage : function () {
    var t = Tabs.Alliance;
    document.getElementById('alList').disabled = true;
    var params = uW.Object.clone(uW.g_ajaxparams);
    
    params.pf = 0;
    
    new AjaxRequest(uW.g_ajaxpath + "ajax/allianceGetInfo.php" + uW.g_ajaxsuffix, {
      method: "post",
      parameters: params,
      onSuccess: function (transport) {
      	  var rslt = eval("(" + transport.responseText + ")");
          t.totalmembers = (rslt["allianceInfo"]["members"]);
          for (var i=1;i<=10;i++) {
                 params.pageNo = i;
                 params.pf = 0;
                 new AjaxRequest(uW.g_ajaxpath + "ajax/allianceGetMembersInfo.php" + uW.g_ajaxsuffix, {
                   method: "post",
                   parameters: params,
                   onSuccess: function (transport) {
                    var info = eval("(" + transport.responseText + ")");
                    if (info.ok) {  
                       for (var k in info["memberInfo"]){
                         if ( info["memberInfo"][k]["might"] != undefined && !t.error){  
                           t.alliancemembers.push ({
                               Name: info["memberInfo"][k]["name"],
                               Might: parseInt(info["memberInfo"][k]["might"]),
                               Cities: parseInt(info["memberInfo"][k]["cities"]),
                               Position : parseInt(info["memberInfo"][k]["positionType"]),
                               dip : parseInt(info["memberInfo"][k]["daysInPosition"]),
                               LastLogin : info["memberInfo"][k]["lastLogin"],
                               uid : parseInt(info["memberInfo"][k]["userId"]),
                               fbuid : parseInt(info["memberInfo"][k]["fbuid"]),
							   avatarurl : info["memberInfo"][k]["avatarurl"],
							   glory : parseInt(info["memberInfo"][k]["glory"]),
							   dateJoined : info["memberInfo"][k]["dateJoined"], 							   
                           });
                          }
                           document.getElementById('alOverviewTab').innerHTML ="";
                           t.paintMembers();
                   		}
                       if (!t.error) document.getElementById('progress').innerHTML	 = '(' + (t.alliancemembers.length) +'/'+ t.totalmembers +')';
                       if ( t.alliancemembers.length >= t.totalmembers) document.getElementById('alList').disabled = false;
                    } else  if (info.error) {
                    	document.getElementById('alList').disabled = false;
                    	document.getElementById('progress').innerHTML = "ERROR!";
                    	t.error=true;
                   	}
                   },
                   onFailure: function (rslt) {;
                     notify ({errorMsg:'AJAX error'});
                   },
                   
           });
          }
      },
      onFailure: function (rslt) {;
        notify ({errorMsg:'AJAX error'});
      },
    });
  },
  
  
  hide : function (){         
    mainPop.div.style.width = 750 + 'px';
  },

  show : function (){         
  		var t = Tabs.Alliance;
        mainPop.div.style.width = 750 + 'px';
  },
};

/*************************************** MARCHES TAB ************************************************/

Tabs.Marches = {
  tabOrder : 5,
  tabLabel : uW.g_js_strings.commonstr.marching,
  cont:null,
  displayTimer:null,
  curTabBut : null,
  curTabName : null,
  widescreen:true,
  	
  init : function (div){
    var t = Tabs.Marches;
    uW.pr56Recall = t.butRecall;
    uW.r8x6Home = t.butSendHome;
    uW.cancelMarch = t.butcancelmarch;
    
    t.cont = div;
    var main = '<TABLE class=ptTab align=center><TR><TD><INPUT class=pbSubtab ID=ptmrchSubN type=submit value='+uW.g_js_strings.attack_viewimpending_view.incomingtroops+'></td>';
	main +='<TD><INPUT class=pbSubtab ID=ptmrchSubM type=submit value='+uW.g_js_strings.commonstr.marching+'></td>';
    main +='<TD><INPUT class=pbSubtab ID=ptmrchSubR type=submit value='+uW.g_js_strings.commonstr.reinforced+'></td></tr></table><HR class=ptThin>';
    main += '<TD width = "100px" ; border:none"><a href="http://code.google.com/p/koc-power-tools/wiki/HowToMarches" target="_blank">HELP</a></td></tr>';
	main +='<DIV id=ptMarchOutput style="margin-top:10px; background-color:white; height:680px; overflow:scroll;"></div>';

	
    t.cont.innerHTML = main;       
    t.marchDiv = document.getElementById('ptMarchOutput');
    document.getElementById('ptmrchSubN').addEventListener('click', e_butSubtab, false);
    document.getElementById('ptmrchSubR').addEventListener('click', e_butSubtab, false);
    document.getElementById('ptmrchSubM').addEventListener('click', e_butSubtab, false);
    changeSubtab (document.getElementById('ptmrchSub'+Options.curMarchTab));
    
    function e_butSubtab (evt){
      changeSubtab (evt.target);   
    }

    function changeSubtab (but){
      if (but == t.curTabBut)
        return;
      if (t.curTabBut){
        t.curTabBut.className='pbSubtab'; 
        t.curTabBut.disabled=false;
      }
      t.curTabBut = but;
      but.className='pbSubtab pbSubtabSel'; 
      but.disabled=true;
      t.curTabName = but.id.substr(9);
      Options.curMarchTab = t.curTabName;
	  saveOptions();
      t.show ();
    }    
  },

  hide : function (){
    var t = Tabs.Marches;
    clearTimeout (t.displayTimer);
  },
  
  show : function (){
    var t = Tabs.Marches;
    clearTimeout (t.displayTimer);
    if (t.curTabName == 'R')
      t.showReinforcements();
    else if (t.curTabName == 'M')
      t.showMarches();
    else 
      t.showIncoming();
  },
  
  /***   Incoming SUBTAB  ***/
      showIncoming : function (){
        var t = Tabs.Marches;
        t.marchDiv.innerHTML = null;	

        var z = '<TABLE id=pdincoming cellSpacing=10 width=100% height=0% class=pbTab>';
       
        for (k in Seed.queue_atkinc) {
          if(Seed.queue_atkinc.length !=0){
				var now = unixTime();
				var icon, status, FROM, cityname, FROMmight, marchdir, marchtime;
				var marchType = parseInt(Seed.queue_atkinc[k]["marchType"]);
				var marchStatus = parseInt(Seed.queue_atkinc[k]["marchStatus"]);
				
				for (var i=0; i<Seed.cities.length;i++) {
					if (Seed.cities[i][0] == Seed.queue_atkinc[k]["toCityId"]) cityname = Seed.cities[i][1];
				}   
			
				if (Seed.queue_atkinc[k]["destinationUnixTime"] < now || marchStatus == 8)
					marchdir = "returning";
				else
					marchdir = "going";	
				
				var destinationUnixTime = Seed.queue_atkinc[k]["arrivalTime"] - now;
				if(destinationUnixTime > 0)
					marchtime = timestr(destinationUnixTime, true)
				else
					marchtime = 'Arrived';
				
				if (marchType != 3 && marchType !=4){
					var player = Seed.players['u'+Seed.queue_atkinc[k]["fromPlayerId"]]
					FROM = player.n;
					FROMmight = player.m;
				}
				else {
					for (players in Seed.players){
						if (marchType == 3 || marchType == 4){ 
							if (('u'+Seed.queue_atkinc[k]["pid"]) == players){ 
							  FROM = Seed.players[players]["n"];
							  FROMmight = Seed.players[players]["m"];
							}
						}
					}
				}
				
				if (marchType == 2 && marchStatus == 2) marchType = 102;
				
				switch (marchType) {
					case 1: icon="http://cdn1.kingdomsofcamelot.com/fb/e2/src/img/transporting.jpg";status=uW.g_js_strings.commonstr.transport;break;
					case 2: icon="http://cdn1.kingdomsofcamelot.com/fb/e2/src/img/reinforce.jpg";status=uW.g_js_strings.commonstr.reinforce	;break;
					case 3: icon="http://cdn1.kingdomsofcamelot.com/fb/e2/src/img/scouting.jpg";status=uW.g_js_strings.commonstr.scout;break;
					case 4: icon="http://cdn1.kingdomsofcamelot.com/fb/e2/src/img/attacking.jpg";status=uW.g_js_strings.commonstr.attack;break;
					case 9: icon="http://cdn1.kingdomsofcamelot.com/fb/e2/src/img/attacking.jpg";status=uW.g_js_strings.commonstr.attack;break;
					case 5: icon="http://cdn1.kingdomsofcamelot.com/fb/e2/src/img/transporting.jpg";status=uW.g_js_strings.commonstr.reassign;break;
					case 100: icon="http://cdn1.kingdomsofcamelot.com/fb/e2/src/img/returning.jpg";status=uW.g_js_strings.commonstr.returning;break;
					case 102: icon="http://cdn1.kingdomsofcamelot.com/fb/e2/src/img/reinforce.jpg";status=uW.g_js_strings.commonstr.encamped;break;
				} 
				
				if(status == uW.g_js_strings.commonstr.encamped)
					z += '<TD width="10px"><A onclick="r8x6Home('+ Seed.queue_atkinc[k].marchId +')"><img src='+ icon +'></a></td>';
				else
					z += '<TD width="10px"><img src='+ icon +'></td>';
				z += '<TD width="40px">'+ status +'</td>';
				z += '<TD>' + cityname + '</td>';
				z += '<TD>'+ marchtime +'</td>';
				z +='<TD>'+uW.g_js_strings.commonstr.from+': ' + FROM + '</td>';
				z +='<TD>'+uW.g_js_strings.commonstr.might+': ' + addCommas(FROMmight) + '</td>';
				if (Seed.queue_atkinc[k]["knt"] != undefined) z +='<TD>'+uW.g_js_strings.commonstr.knight+': '+ Seed.queue_atkinc[k]["knt"]["cbt"]+'</td>';
				
				if (Seed.queue_atkinc[k]["gold"] > 0) z += '<TD>'+uW.resourceinfo.rec0 +': '+ addCommas(Seed.queue_atkinc[k]["gold"]) +'</td>';
				if (Seed.queue_atkinc[k]["resource1"] > 0) z += '<TD>'+uW.resourceinfo.rec1 +': '+ addCommas(Seed.queue_atkinc[k]["resource1"]) +'</td>';
				if (Seed.queue_atkinc[k]["resource2"] > 0) z += '<TD>'+uW.resourceinfo.rec2 +': '+ addCommas(Seed.queue_atkinc[k]["resource2"]) +'</td>';
				if (Seed.queue_atkinc[k]["resource3"] > 0) z += '<TD>'+uW.resourceinfo.rec3 +': '+ addCommas(Seed.queue_atkinc[k]["resource3"]) +'</td>';
				if (Seed.queue_atkinc[k]["resource4"] > 0) z += '<TD>'+uW.resourceinfo.rec4 +': '+ addCommas(Seed.queue_atkinc[k]["resource4"]) +'</td>';
        		    
				for(i=1; i<14; i++){
					if(Seed.queue_atkinc[k]["unit"+i+"Count"] > 0 && marchdir == "going") z += '<TD>'+ uW.unitcost['unt'+i][0] +': '+ addCommas(Seed.queue_atkinc[k]["unit"+i+"Count"]) +'</td>';
					if(Seed.queue_atkinc[k]["unit"+i+"Return"] > 0 && marchdir == "returning") z += '<TD>'+ uW.unitcost['unt'+i][0] +': '+ addCommas(Seed.queue_atkinc[k]["unit"+i+"Return"]) +'</td>';
				}
        		
				if (marchType == 3)
					if (Seed.queue_atkinc[k]["unts"]["u3"] > 0) z += '<TD>'+uW.unitcost.unt3[0]+': '+ addCommas(Seed.queue_atkinc[k]["unts"]["u3"]) +'</td>';
				if (marchType == 4){
					for(ui=1; ui<14; ui++){
						if (Seed.queue_atkinc[k]["unts"]["u"+ui] > 0) z += '<TD>'+ uW.unitcost['unt'+ui][0] +': '+ addCommas(Seed.queue_atkinc[k]["unts"]["u"+ui]) +'</td>';
					}
				}
				
				z += '</tr>';
          } 
		}
     z += '</table>';
     t.marchDiv.innerHTML = z;
    
     t.displayTimer = setTimeout (t.showIncoming, 500);  
   },   
      
        
  /***   MARCHES SUBTAB  ***/
    showMarches : function (){
      var t = Tabs.Marches;
      t.marchDiv.innerHTML =null;	
      var updatemarch = Seed.queue_atkp;
     
     var  m = '<TABLE id=pdmarches cellSpacing=10 width=200px height=0% class=pbTab>';
     if (t.widescreen) m += '<TR><TD><INPUT id=Wide type=checkbox checked=true>Widescreen</td>';
     else  m += '<TR><TD><INPUT id=Wide type=checkbox unchecked=true>Widescreen</td></tr></table>';
     m+='<TABLE id=pdmarches cellSpacing=10 width=100% height=0% class=pbTab>';
     for (var c=0; c< Seed.cities.length;c++) {
     		cityname = Seed.cities[c][1];
     		cityID = 'city' + Seed.cities[c][0];    
    		number=0;	
    		
    		if (Seed.queue_atkp[cityID].length !=0) m+= '<TR><TD colspan=5 style=\'background: #99CCFF;\' align=center><B>' + cityname +': </b></td></tr>';
  		    for (k in Seed.queue_atkp[cityID]){
  				if (Seed.queue_atkp[cityID].length !=0) {
  				    var marchID = new String(k);
  				    marchID = marchID.substr(1);
  				    var marchType = parseInt(Seed.queue_atkp[cityID][k]["marchType"]);
  				    var marchStatus = parseInt(Seed.queue_atkp[cityID][k]["marchStatus"]);
  				    var now = unixTime();
  				    cityTo = null;
  				    number++;
					var icon, status, type, cityTo, knight, marchtime;
  				    
  				    for (var i=0; i<Seed.cities.length;i++) {
  				    		if (Seed.cities[i][2] == Seed.queue_atkp[cityID][k]["toXCoord"] && Seed.cities[i][3] == Seed.queue_atkp[cityID][k]["toYCoord"]) cityTo = Seed.cities[i][1];
  				    }
  				    
  				    //for (var i=0; i<Seed.cities.length;i++) {
					//	if (Seed.cities[i][2] == Seed.queue_atkp[cityID][k]["toCityId"]) cityTo = Seed.cities[i][1];
  				    //}
  				    
  				    var destinationUnixTime = Seed.queue_atkp[cityID][k]["destinationUnixTime"] - now;
  				    var returnUnixTime = Seed.queue_atkp[cityID][k]["returnUnixTime"] - now;
  				    var encampedUnixTime = now - Seed.queue_atkp[cityID][k]["destinationUnixTime"];
					var restingUnixTime = now - Seed.queue_atkp[cityID][k]["returnUnixTime"];
					
  				    if (Seed.queue_atkp[cityID][k]["destinationUnixTime"] > now)
						marchtime = timestr(destinationUnixTime, true);
  				    else
						marchtime = timestr(returnUnixTime, true);
  				    
  				    if (Seed.queue_atkp[cityID][k]["destinationUnixTime"] < now && marchType == 2)
						marchtime = timestr(encampedUnixTime, true);
					if (Seed.queue_atkp[cityID][k]["returnUnixTime"] < now && marchType == 9)
						marchtime = timestr(restingUnixTime, true);
  				  
  				    if (Seed.queue_atkp[cityID][k]["destinationUnixTime"] < now || marchStatus == 8)
						type = "returning";
  				    else
						type = "going";
  				   
					if(Seed.queue_atkp[cityID][k]["destinationUnixTime"] < now){
						if (marchStatus == 8)
							marchtime = timestr(returnUnixTime, true);
						if (type =="returning" && marchType == 2 && marchStatus != 2)
							marchtime = timestr(returnUnixTime, true);
						if (type =="returning" && marchType == 4 && marchStatus == 2)
							marchtime = timestr(returnUnixTime, true);
						if (marchStatus == 2 && marchType !=2)
							marchtime = timestr(returnUnixTime, true);
					}
  				    if (parseInt(Seed.queue_atkp[cityID][k]["marchType"]) == 4 && marchStatus == 2)
						marchtime = timestr(destinationUnixTime, true);;
  				    
					
					if (type =="returning" && marchType != 2)
						marchType = 8;
  				    if (type =="returning" && marchType == 2 && marchStatus == 2)
						marchType = 102;
  				    if (type =="returning" && marchType == 2 && marchStatus != 2)
						marchType = 8;
  				    if (marchStatus == 3)
							marchType = 103;
					if (marchStatus == 4)
							marchType = 104;
					
					
  				    if (parseInt(Seed.queue_atkp[cityID][k]["marchType"]) == 4 && marchStatus == 2) {
  						marchType = 102;
  						marchtime = timestr(encampedUnixTime, true)
  				    }
  
  				    switch (marchType) {
  					    case 1: icon="http://cdn1.kingdomsofcamelot.com/fb/e2/src/img/transporting.jpg";status=uW.g_js_strings.commonstr.transport;break;
  					    case 2: icon="http://cdn1.kingdomsofcamelot.com/fb/e2/src/img/reinforce.jpg";status=uW.g_js_strings.commonstr.reinforce;break;
  					    case 3: icon="http://cdn1.kingdomsofcamelot.com/fb/e2/src/img/scouting.jpg";status=uW.g_js_strings.commonstr.scout;break;
  					    case 4: icon="http://cdn1.kingdomsofcamelot.com/fb/e2/src/img/attacking.jpg";status=uW.g_js_strings.commonstr.attack;break;
  					    case 5: icon="http://cdn1.kingdomsofcamelot.com/fb/e2/src/img/transporting.jpg";status=uW.g_js_strings.commonstr.reassign;break;
  					    case 8: icon="http://cdn1.kingdomsofcamelot.com/fb/e2/src/img/returning.jpg";status=uW.g_js_strings.commonstr.returning;break;
  					    case 9: icon="http://cdn1.kingdomsofcamelot.com/fb/e2/src/img/attacking.jpg";status=uW.g_js_strings.commonstr.raid;break;
  					    case 102: icon="http://cdn1.kingdomsofcamelot.com/fb/e2/src/img/reinforce.jpg";status=uW.g_js_strings.commonstr.encamped;break;
						case 103: icon="http://cdn1.kingdomsofcamelot.com/fb/e2/src/img/autoAttack/raid_stopped_desat.png";status=unsafeWindowg_js_strings.attack_generatequeue.raidstopped;break;
						case 104: icon="http://cdn1.kingdomsofcamelot.com/fb/e2/src/img/autoAttack/raid_resting.png";status=uW.g_js_strings.attack_generatequeue.raidresting;break;
  				    } 
  				      				    
  				    if (Seed.queue_atkp[cityID][k]["knightId"] !=0){
  				    	for (i in Seed.knights[cityID]) {
  				    			if (i == ("knt" + Seed.queue_atkp[cityID][k]["knightId"]) ) knight = Seed.knights[cityID][i]["combat"];
  				    	}
  				    } else knight = null;
  				    
  				    m += '<TR><TD>'+ number +'</td>';
  				   if (status=="Encamped" && !t.isMyself(Seed.queue_atkp[cityID][k].fromPlayerId))
						m += '<TD><A onclick="r8x6Home('+ marchID +')"><img src='+ icon +'></a></td>';
  				    else if(status=='Encamped' && t.isMyself(Seed.queue_atkp[cityID][k].fromPlayerId))
						m += '<TD><A onclick="pr56Recall('+ marchID +')"><img src='+ icon +'></a></td>';
					else if(status=='Returning' || status=="Stopped" || status=="Resting")
						m += '<TD><img src='+ icon +'></td>';
					else
						m += '<TD><A onclick="cancelMarch('+ marchID +')"><img src='+ icon +'></a></td>';
  				    m += '<TD width="40px">'+ status +'</td>';
  				    m += '<TD>'+ marchtime +'</td>';
  				    
  				    if (cityTo == null)
						m += '<TD style="padding-right:10px;">'+ coordLink(Seed.queue_atkp[cityID][k]["toXCoord"],Seed.queue_atkp[cityID][k]["toYCoord"]) + '</td>';
  				    else
						m += '<TD style="padding-right:10px;">'+ cityTo +'</td>';
  				    
  				    if (knight != null)  m += '<TD>'+uW.g_js_strings.commonstr.knight+': '+ knight +'</td>';
  				    
  				    if (Seed.queue_atkp[cityID][k]["toTileType"] == 11) m+='<TD>Lake Lvl: ' + Seed.queue_atkp[cityID][k]["toTileLevel"] + '</td>';
  				    else if (Seed.queue_atkp[cityID][k]["toTileType"] == 20) m+='<TD>Grassland Lvl: ' + Seed.queue_atkp[cityID][k]["toTileLevel"] + '</td>';
  				    else if (Seed.queue_atkp[cityID][k]["toTileType"] == 30) m+='<TD>Hills Lvl: ' + Seed.queue_atkp[cityID][k]["toTileLevel"] + '</td>';
  				    else if (Seed.queue_atkp[cityID][k]["toTileType"] == 40) m+='<TD>Mountain Lvl: ' + Seed.queue_atkp[cityID][k]["toTileLevel"] + '</td>';
  				    else if (Seed.queue_atkp[cityID][k]["toTileType"] == 50) m+='<TD>Plain Lvl: ' + Seed.queue_atkp[cityID][k]["toTileLevel"] + '</td>';
  					else if (Seed.queue_atkp[cityID][k]["toCityId"] ==0) m +='<TD>'+uW.g_js_strings.commonstr.barbariancamp+' '+uW.g_js_strings.commonstr.lvl+': '+Seed.queue_atkp[cityID][k]["toTileLevel"]+'</td>';
  		
  				    if (Seed.queue_atkp[cityID][k]["gold"] > 0) m += '<TD>'+uW.resourceinfo.rec0 +': '+ Seed.queue_atkp[cityID][k]["gold"] +'</td>';
  				    if (Seed.queue_atkp[cityID][k]["resource1"] > 0) m += '<TD>'+uW.resourceinfo.rec1 +': '+ addCommas(Seed.queue_atkp[cityID][k]["resource1"]) +'</td>';
  				    if (Seed.queue_atkp[cityID][k]["resource2"] > 0) m += '<TD>'+uW.resourceinfo.rec2 +': '+ addCommas(Seed.queue_atkp[cityID][k]["resource2"]) +'</td>';
  				    if (Seed.queue_atkp[cityID][k]["resource3"] > 0) m += '<TD>'+uW.resourceinfo.rec3 +': '+ addCommas(Seed.queue_atkp[cityID][k]["resource3"]) +'</td>';
  				    if (Seed.queue_atkp[cityID][k]["resource4"] > 0) m += '<TD>'+uW.resourceinfo.rec4 +': '+ addCommas(Seed.queue_atkp[cityID][k]["resource4"]) +'</td>';
  				    
  				    for(i=1; i<14; i++){
						if(Seed.queue_atkp[cityID][k]["unit"+i+"Count"] > 0 && type == "going") m += '<TD>'+ uW.unitcost['unt'+i][0] +': '+ addCommas(Seed.queue_atkp[cityID][k]["unit"+i+"Count"]) +'</td>';
						if(Seed.queue_atkp[cityID][k]["unit"+i+"Return"] > 0 && type == "returning") m += '<TD>'+ uW.unitcost['unt'+i][0] +': '+ addCommas(Seed.queue_atkp[cityID][k]["unit"+i+"Return"]) +'</td>';
					}
					m += '</tr>';
				}
  		    }
  	}
  	m += '</table>';
  	t.marchDiv.innerHTML = m;
  	
  	if (t.widescreen==false) document.getElementById('ptMarchOutput').style.maxWidth = '740px';
  	else document.getElementById('ptMarchOutput').style.maxWidth = '740px';
  	
  	document.getElementById('Wide').addEventListener('click', function(){
  		t.widescreen=document.getElementById('Wide').checked;	
  	}, false);
  	
    t.displayTimer = setTimeout (t.showMarches, 500);  
    },
	
	isMyself: function(userID){
		if(!Seed.players["u"+userID])
			return false;
		if(Seed.players["u"+userID].n == Seed.player.name)
			return true;
		else
			return false;
		return false;
	},
    
    butcancelmarch: function(marchID){
    	 var t = Tabs.Marches;
    	 	 var params = uW.Object.clone(uW.g_ajaxparams);
    	 	 params.mid = marchID;
     	 	 for (var c=0; c<Cities.numCities; c++){
    	 	   var que = Seed.queue_atkp['city'+ Cities.cities[c].id];
    	 	   if (matTypeof(que)=='array')
    	 	     continue;
    	 	   for (k in que){
    	 	     if (k == 'm'+marchID){
    	 	       params.cid = Cities.cities[c].id;
    	 	       break;
    	 	     }
    	 	   }    
    	 	 }    
    	 	 
    	 	 new AjaxRequest(uW.g_ajaxpath + "ajax/cancelMarch.php" + uW.g_ajaxsuffix, {
    	 	     method: "post",
    	 	     parameters: params,
    	 	     onSuccess: function (rslt) {
    	 	     var march = uW.seed.queue_atkp["city" + params.cid]["m" + params.mid];
    	 	     march.marchStatus = 8;
    	 	      var marchtime = parseInt(march.returnUnixTime) - parseInt(march.destinationUnixTime);
    	 	      var ut = unixTime();
    	 	      if (uW.seed.playerEffects.returnExpire > unixTime())
    	 	        marchtime *= 0.5
    	 	       march.returnUnixTime = ut + marchtime;
    	 	       march.destinationUnixTime = ut;
    	 	       march.marchUnixTime = ut - marchtime;
    	 	       if (notify != null)
    	 	         notify(rslt.errorMsg);
    	 	     },
    	 	     onFailure: function () {
    	 	       if (notify != null)
    	 	         notify(rslt.errorMsg);
    	 	     },
    	 	 });
    	 	 
    	 },    
      
  /***  REINFORCEMENTS SUBTAB  ***/
  showReinforcements : function (){
    var rownum = 0;
    var names = ['Supply', 'Mil', 'Scout', 'Pike', 'Sword', 'Archer', 'Cav', 'Heavy', 'Wagon', 'Balli', 'Ram', 'Cat'];
    var t = Tabs.Marches;
    clearTimeout (t.displayTimer);
    
// TODO FIX:    Troops show as encamped even if they are here yet (check destinationUnixTime)

/***    
var s = 'OUTGOING:<BR>'; 
for (var c=0; c<Cities.numCities; c++){
  var que = Seed.queue_atkp['city'+ Cities.cities[c].id];
  if (matTypeof(que)=='array')
    continue;

s += 'City: '+  Cities.cities[c].name + ': <BR>'; 

  for (k in que){
    march = que[k];
    var mid = k.substr(1);
    s += mid +' DEST: '+ march.toXCoord +','+ march.toYCoord + '  <INPUT type=submit value="Recall" onclick="pr56Recall('+ mid +')"><BR>'
  }      
} 
t.cont.innerHTML = s;
t.displayTimer = setTimeout (t.show, 10000);
return;
***/
    
    function clickShowRemaining (){
      checkBox = document.getElementById('idCheck2');
      if (checkBox.checked)
        Options.encRemaining = false;
      else
        Options.encRemaining = true;
      t.show ();
    }
        
    enc = {};
    numSlots = 0;
    
    if (matTypeof(Seed.queue_atkinc) != 'array'){
      for (k in Seed.queue_atkinc){
        march = Seed.queue_atkinc[k];
        if (march.marchType == 2){
          ++numSlots;
          city = march.toCityId;
          from = march.fromPlayerId;
          if (!enc[city])
            enc[city] = {};
          if (!enc[city][from])
            enc[city][from] = [];
          s = {};
          s.knight = parseInt (march.knightCombat);
          s.marchId = k.substr(1);
          s.troops = [];
          for (i=1; i<14; i++){
            if (Options.encRemaining)
              s.troops[i] = parseInt (march['unit'+ i +'Return']);
            else
              s.troops[i] = parseInt (march['unit'+ i +'Count']);
          }
          enc[city][from].push (s);
        }
      }
    }
//logit ("enc: "+ inspect (enc, 6, 1));    
    s = '<div class=ptstat>Showing troops encamped at each of your embassies.</div><BR>';
    if (numSlots == 0){
      s += '<BR><CENTER><B>No troops encamped.</b></center>';
    } else {
      s += '<STYLE> .tot{background:#f0e0f8;} .city{background:#ffffaa;}</style>';
      s += '<TABLE cellspacing=0 width=100%><TR align=right><TD align=left width=16%><B>Player (knight)</b></td>';

      for (k=0; k<names.length; k++)
        s += '<TD width=7%><B>' + names[k] + '</b></td>';
      s += '</tr>';

      tot = [];
      for (i=0; i<14; i++)
        tot[i] = 0;
      for (c in Cities.cities){
        dest = Cities.cities[c].id;
        if (enc[dest]){
          s+= '<TR><TD class=xtab><BR></td></tr>';
          s+= '<TR><TD class="city" colspan=13 align=center><B>'+ Cities.cities[c].name +'</b></td></tr>';
          for (p in enc[dest]){
            try {
              player = Seed.players['u'+p].n;
            } catch (err){
              player = '???';
            }
            for (m=0; m<enc[dest][p].length; m++){
              var march = enc[dest][p][m];
              knight = '';
              if (march.knight > 0)
                knight = ' ('+ march.knight +')';
// TODO: Only allow 'send home' if troops are here now  (marchStatus = ?)              
              s += '<TR align=right><TD align=left>'+ player + knight +' <A><SPAN onclick="r8x6Home('+ march.marchId +')">X</span></a></td>'
              for (i=1; i<14; i++){
                s += '<TD>'+ march.troops[i]  +'</td>';
                tot[i] += march.troops[i];
              }
              s += '</tr>';

            }
          }
        }
      }
      s += '<TR><TD colspan=13><BR><BR></td></tr><TR align=right><TD class="tot" align=left><B>TOTALS:</b></td>';
      for (i=1; i<14; i++)
        s+= '<TD class="tot">'+ tot[i] +'</td>';
      s += '</tr></table>';
    }

    s += '<BR><BR><INPUT type=CHECKBOX id=idCheck2 '+ (Options.encRemaining?'':' CHECKED ') +'> Show Original Troops';
    s += '<BR><BR><DIV style="font-size: 10px">NOTE: You will need to refresh KofC to show new encampments or remaining troops after a battle.</div>';
    t.marchDiv.innerHTML = s;
    checkBox = document.getElementById('idCheck2');
    checkBox.addEventListener('click', clickShowRemaining, false);
    t.displayTimer = setTimeout (t.show, 10000);
  },

  
  butRecall : function (marchId){
    var t = Tabs.Marches;
    logit ("CANCELLING: "+ marchId); 
    t.ajaxRecall (marchId); 
  },

  butSendHome : function (marchId){
    var t = Tabs.Marches;
    //alert("Sent Home march#"+marchId);
    logit ("SEND HOME: "+ marchId); 
    t.ajaxSendHome (marchId, function(r){t.show(); logit("AJAX RESULT: "+ r)}); 
  },


  /***  
  // not working, returns 'invalid parameters' :(  
  ajaxCancelMarch : function (marchId, notify){
    var params = uW.Object.clone(uW.g_ajaxparams);
logit ('ajaxCancelMarch: '+ marchId);    
    for (var c=0; c<Cities.numCities; c++){
      var que = Seed.queue_atkp['city'+ Cities.cities[c].id];
      if (matTypeof(que)=='array')
        continue;
      for (k in que){
        if (k == 'm'+marchId){
          params.cid = Cities.cities[c].id;
          params.cityId = Cities.cities[c].id;
          break;
        }
      }    
    }    
    params.marchId = marchId;
    params.mid = 'm'+ marchId;
    params.requestType = "CANCEL_MARCH";
    new MyAjaxRequest(uW.g_ajaxpath + "ajax/cancelMarch.php" + uW.g_ajaxsuffix, {
        method: "post",
        parameters: params,
        onSuccess: function (rslt) {
          if (notify != null)
            notify(rslt.errorMsg);
        },
        onFailure: function () {
          if (notify != null)
            notify(rslt.errorMsg);
        },
    });
  },
***/  
 




  ajaxSendHome : function (marchId, notify){
logit ('ajaxSendHome: '+ marchId);    
    var march = Seed.queue_atkinc['m'+ marchId];
    if (march == null){
      notify ('March not found!'); 
      return;
    }    
    var params = uW.Object.clone(uW.g_ajaxparams);
    params.mid = marchId;
    params.cid = march.toCityId;
    params.fromUid = march.fromPlayerId;
    params.fromCid = march.fromCityId;
   
    new MyAjaxRequest(uW.g_ajaxpath + "ajax/kickoutReinforcements.php" + uW.g_ajaxsuffix, {
        method: "post",
        parameters: params,
        onSuccess: function (rslt) {
          if (rslt.ok){
            var upkeep = 0;
            for (var i=1; i<14; i++)
              upkeep += parseInt(march["unit" + i + "Return"]) * parseInt(uW.unitupkeeps[i])
            uW.seed.resources["city"+ march.toCityId].rec1[3] -= upkeep;
            if (parseInt(march.fromPlayerId) == parseInt(uW.tvuid)) {
//logit ('FROM ME!'); 
              var mymarch = uW.seed.queue_atkp["city" + march.fromCityId]["m" + marchId];
              var marchtime = Math.abs(parseInt(mymarch.destinationUnixTime) - parseInt(mymarch.eventUnixTime));
              mymarch.returnUnixTime = unixTime() + marchtime;
              mymarch.marchStatus = 8;
            }
            delete uW.seed.queue_atkinc["m" + marchId];
            if (notify != null)
              notify(null);
          } else {
            if (notify != null)
              notify(rslt.errorMsg);
          }
        },
        onFailure: function () {
          if (notify != null)
            notify(rslt.errorMsg);
        },
    });
  },

/*****

      for (var b = 1; b < 13; b++) {
        g += parseInt(e["unit" + b + "Return"]) * parseInt(unitupkeeps[b])
      }

function kickout_allies(mid, cid, fromUid, fromCid, upkeep) {
  var params = Object.clone(g_ajaxparams);
  params.mid = mid;
  params.cid = cid;
  params.fromUid = fromUid;
  params.fromCid = fromCid;
  new Ajax.Request(g_ajaxpath + "ajax/kickoutReinforcements.php" + g_ajaxsuffix, {
    method: "post",
    parameters: params,
    onSuccess: function(transport) {
      var rslt = eval("(" + transport.responseText + ")");
      if (rslt.ok) {
        Modal.showAlert(g_js_strings.kickout_allies.troopshome);
        seed.resources["city" + currentcityid].rec1[3] = parseInt(seed.resources["city" + currentcityid].rec1[3]) - upkeep;
        Modal.hideModalAll();
        if (parseInt(fromUid) == parseInt(tvuid)) {
          var curmarch = seed.queue_atkp["city" + fromCid]["m" + mid];
          var marchtime = Math.abs(parseInt(curmarch.destinationUnixTime) - parseInt(curmarch.eventUnixTime));
          curmarch.returnUnixTime = unixtime() + marchtime;
          curmarch.marchStatus = 8
        }
        delete seed.queue_atkinc["m" + mid]
      } else {
        Modal.showAlert(printLocalError((rslt.error_code || null), (rslt.msg || null), (rslt.feedback || null)))
      }
    },
    onFailure: function() {}
  })
};
***/




 
  ajaxRecall : function (marchId, notify){
    var params = uW.Object.clone(uW.g_ajaxparams);
    for (var c=0; c<Cities.numCities; c++){
      var que = Seed.queue_atkp['city'+ Cities.cities[c].id];
      if (matTypeof(que)=='array')
        continue;
      for (k in que){
        if (k == 'm'+marchId){
          params.cid = Cities.cities[c].id;
          break;
        }
      }    
    }    
    params.mid = marchId;
    new MyAjaxRequest(uW.g_ajaxpath + "ajax/undefend.php" + uW.g_ajaxsuffix, {
        method: "post",
        parameters: params,
        onSuccess: function (rslt) {
          var march = uW.seed.queue_atkp["city" + params.cid]["m" + params.mid];
          march.marchStatus = 8;
          var marchtime = parseInt(march.returnUnixTime) - parseInt(march.destinationUnixTime);
          var ut = unixTime();
          if (uW.seed.playerEffects.returnExpire > unixTime())
            marchtime *= 0.5
          march.returnUnixTime = ut + marchtime;
          march.destinationUnixTime = ut;
          march.marchUnixTime = ut - marchtime;
          if (notify != null)
            notify(rslt.errorMsg);
        },
        onFailure: function () {
          if (notify != null)
            notify(rslt.errorMsg);
        },
    });
  },
  
};


/*******************************************/

var PageNavigator = {
  modalMessagesFunc : null,
  ctrlPaginationOld : null,
  loadPage_paginationOld : null,
  cpPager : null,
  
  init : function (){
    var t = PageNavigator;
    t.modalMessagesFunc = new CalterUwFunc ('modal_messages', [
        [/pageNavigatorModel =.*$/im, 'var pager = new ptPagerHook(0,5); pageNavigatorModel=pager'],
        [/pageNavigatorView =.*$/im, 'pageNavigatorView=pager'],
        [/pageNavigatorController =.*$/im, 'pageNavigatorController=pager']
        ]);
    uW.ptPagerHook = t.Cpager;
    t.ctrlPaginationOld = uW.ctrlPagination;
    t.loadPage_paginationOld = uW.loadPage_pagination;
    t.cpPager = new t.Cpager (0,0);
    t.cpPager.oldStyle = true;
    t.enable(Options.fixPageNav);
  },

  // called on 'back' ...
  loadPage_pagination : function (divId, currentPage, callbackFunction, totalPages) {
    var t = PageNavigator;
    var curPage = parseInt(currentPage);
//logit ('loadPage_pagination: '+  divId +','+ t.cpPager.divId +','+ currentPage +','+ callbackFunction +','+ totalPages +','+ t.cpPager.getCurrentPage()); 
    if (divId == t.cpPager.divId) // if 'old' style ...  
      unsafeWindow[callbackFunction] (t.cpPager.getCurrentPage());
    else
      unsafeWindow[callbackFunction] (currentPage);
  },
    
  ctrlPagination : function (navDivId, numPages, notify, curPage){
    var t = PageNavigator;
//logit ('ctrlPagination (divid:'+ navDivId +')');    
    if (document.getElementById(navDivId).firstChild == null)
      document.getElementById(navDivId).appendChild (t.cpPager.getHtmlElement());   
    t.cpPager.setPageCount(numPages);
    t.cpPager.divId = navDivId;
    if (!curPage)
      curPage = 1;
    t.cpPager.gotoPage(curPage);
    t.cpPager.onClick = unsafeWindow[notify];
    uW.pageNavigatorView = t.cpPager;
  },  
  
  enable : function (tf){
    var t = PageNavigator;
    t.modalMessagesFunc.setEnable(tf);
    if (tf){
      uW.ctrlPagination = t.ctrlPagination;
      uW.loadPage_pagination = t.loadPage_pagination;
    } else {
      uW.ctrlPagination = t.ctrlPaginationOld;
      uW.loadPage_pagination = t.loadPage_paginationOld;
    }
  },
  
  isAvailable : function (){
    var t = PageNavigator;
    return t.modalMessagesFunc.isAvailable();
  },
  
  Cpager : function (a, b){
    // public function protos ...
    this.getHtmlElement = getHtmlElement;    
    this.setPageCount = setPageCount;    
    this.getPageCount = getPageCount;    
    this.getCurrentPage = getCurrentPage;    
    this.gotoPage = gotoPage;    
    this.e_but = e_but;    
    this.e_inp = e_inp; 
    //    
    var t = this;
    this.onClick = null;
    this.numPages = b;
    this.curPage = a;
    this.oldStyle = false;
    
    function getHtmlElement (){
      function aButton (msg, evtPage){
        return '<A class=ptPageNav onclick="pageNavigatorView.e_but(\''+ evtPage +'\')"><SPAN class=ptPageNav>'+ msg +'</span></a>';
      }
      var div = document.createElement ('div');
      div.id = 'ptPageNavBar';
      div.innerHTML = '<STYLE>table.ptPageNav tr td  {border:none; text-align:center; padding:0px 1px;}\
        span.ptPageNav {font-size:12px; background:inherit; line-height:135%}\
        A.ptPageNav {background-color:#44e; color:#ff4; display:block; border:1px solid #666666; height:18px; width:18px;}\
        A.ptPageNav:hover {background-color:#66f;}\
        A.ptPageNav:active {background-color:#186}\
        </style>\
        <TABLE class=ptPageNav><TR valign=middle>\
        <TD style="margin-right:15px">'+ aButton('<SPAN style="padding-right:0.8em; letter-spacing:-0.99em;">&#x258f;&#x258f;&#x25c4;</span>', 'F') +'</td>\
        <TD>'+ aButton('&#x25c4', '-') +'</td>\
        <TD>'+ aButton('&#x25ba', '+') +'</td>\
        <TD style="margin-right:15px">'+ aButton('<SPAN style="padding-right:1.05em; letter-spacing:-0.99em;">&#x25ba;&#x2595;&#x2595;</span>', 'L') +'</td>\
        <TD width=20></td><TD>Page <INPUT id=ptPagerPageNum onChange="pageNavigatorView.e_inp()" type=text size=1> OF <span id=ptPagerNumPages>?</span></td>\
        </tr></table>';
      var mml = document.getElementById('modal_msg_list');
      if (mml != null)
        mml.style.minHeight = '400px';
      return div;
    }

    function getPageCount(){    // koc needs for 'back'
      return t.numPages;
    }    
    function getCurrentPage(){    // koc needs for 'back'
      return t.curPage;
    }    
    function setPageCount(c){
      t.numPages = c;
      document.getElementById('ptPagerNumPages').innerHTML = c;
      var mml = document.getElementById('modal_msg_list');
      if (mml != null){
        if (document.getElementById('modal_msg_tabs_report').className.indexOf('selected') >= 0)
          mml.style.minHeight = '460px';
        else
          mml.style.minHeight = '400px';
      }
    }
    function gotoPage(p){
      t.curPage = parseIntZero(p);
      document.getElementById('ptPagerPageNum').value = t.curPage;
    }
    function e_but (p){
      if (p=='F' && t.curPage!=1)
        loadPage(1);
      else if (p=='-' && t.curPage>1)
        loadPage(t.curPage-1);
      else if (p=='+' && t.curPage<t.numPages)
        loadPage(t.curPage+1);
      else if (p=='L' && t.curPage!=t.numPages)
        loadPage(t.numPages);
      function loadPage (p){
        if (t.oldStyle)
      t.gotoPage(p);
        t.onClick (p);
      }
    }
    function e_inp (p){
      var pageNum = parseIntZero(document.getElementById('ptPagerPageNum').value);
      t.onClick(pageNum);
    }
  },
}


function addScript (scriptText){
	var scr = document.createElement('script');   
	scr.innerHTML = scriptText;
	document.body.appendChild(scr);
//    setTimeout ( function (){document.body.removeChild(scr);}, 500);
}
addScript ('uwuwuwFunc = function (text){ eval (text);  }');  


/************* Updater code *************/
// Function for displaying a confirmation message modal popup similar to the default javascript confirm() function
// but with the advantage being that it won't halt all other javascript being executed on the page.
// Original Author: Thomas Chapin (April 6, 2011)
function display_confirm(confirm_msg,ok_function,cancel_function){
    if(!confirm_msg){confirm_msg="";}
    
    var container_div = document.getElementById('modal_js_confirm');
    var div;
    if(!container_div) {
        container_div=document.createElement('div');
        container_div.id='modal_js_confirm';
        container_div.style.position='absolute';
        container_div.style.top='0px';
        container_div.style.left='0px';
        container_div.style.width='100%';
        container_div.style.height='1px';
        container_div.style.overflow='visible';
        container_div.style.zIndex=100000;
        
        div=document.createElement('div');
        div.id='modal_js_confirm_contents';
        div.style.zIndex=100000;
        div.style.backgroundColor='#eee';
        div.style.fontFamily='"lucida grande",tahoma,verdana,arial,sans-serif';
        div.style.fontSize='11px';
        div.style.textAlign='center';
        div.style.color='#333333';
        div.style.border='2px outset #666';
        div.style.padding='10px';
        div.style.position='relative';
        div.style.width='300px';
        div.style.height='100px';
        div.style.margin='300px auto 0px auto';
        div.style.display='block';
        
        container_div.appendChild(div);
        document.body.appendChild(container_div);
        
        div.innerHTML = '<div style="text-align:center"><div>'+confirm_msg+'</div><br/><div>Press OK to continue.</div><br><button id="modal_js_confirm_ok_button">OK</button> <button id="modal_js_confirm_cancel_button">Cancel</button></div>';
        var ok_button = document.getElementById('modal_js_confirm_ok_button');
        ok_button.addEventListener('click',function() {
            if(ok_function && typeof(ok_function) == "function"){
           	 ok_function();
            }
            container_div.parentNode.removeChild(container_div);
        },false);
        var cancel_button = document.getElementById('modal_js_confirm_cancel_button');
        cancel_button.addEventListener('click',function() {
            if(cancel_function && typeof(cancel_function) == "function"){
            	cancel_function();
            }
            container_div.parentNode.removeChild(container_div);
        },false);
	}
}

// The following code is released under public domain.

var AutoUpdater_103659 = {
    id: 103659,
    days: 1,
    name: "KOC Power Tools",
    version: Version,
	beta: GlobalOptions.ptupdatebeta,
	betaUrl: 'https://koc-power-tools.googlecode.com/svn/trunk/koc_power_tools.user.js',
    time: new Date().getTime(),
    call: function(response, secure) {
        GM_xmlhttpRequest({
            method: 'GET',
	     url: this.beta ? this.betaUrl : 'http'+(secure ? 's' : '')+'://userscripts.org/scripts/source/'+this.id+'.meta.js',
	    onload: function(xpr) {AutoUpdater_103659.compare(xpr, response);},
            onerror: function(xpr) {if (secure) AutoUpdater_103659.call(response, false);}
        });
    },
    enable: function() {
        GM_registerMenuCommand("Enable "+this.name+" updates", function() {
            GM_setValue('updated_103659', new Date().getTime()+'');
            AutoUpdater_103659.call(true, true)
        });
    },
    compareVersion: function(r_version, l_version) {
        var r_parts = r_version.split(''),
            l_parts = l_version.split(''),
            r_len = r_parts.length,
            l_len = l_parts.length,
            r = l = 0;
        for(var i = 0, len = (r_len > l_len ? r_len : l_len); i < len && r == l; ++i) {
            r = +(r_parts[i] || '0');
            l = +(l_parts[i] || '0');
        }
        return (r !== l) ? r > l : false;
    },
    compare: function(xpr,response) {
        this.xversion=/\/\/\s*@version\s+(.+)\s*\n/i.exec(xpr.responseText);
        this.xname=/\/\/\s*@name\s+(.+)\s*\n/i.exec(xpr.responseText);
        if ( (this.xversion) && (this.xname[1] == this.name) ) {
            this.xversion = this.xversion[1];
            this.xname = this.xname[1];
        } else {
            if ( (xpr.responseText.match("the page you requested doesn't exist")) || (this.xname[1] != this.name) ) {
            	//GM_setValue('updated_103659', 'off');
            }
            return false;
        }
        var updated = this.compareVersion(this.xversion, this.version);
        
        if ( updated ) {
                         
            display_confirm('A new version of '+this.xname+' is available.\nDo you wish to install the latest version?',
                // Ok
                function(){
                    try { 
                        location.href = this.beta ? this.betaUrl :  'http://userscripts.org/scripts/source/'+this.id+'.user.js'; 
                    } catch(e) {}
                },
                // Cancel
                function(){
                    if ( AutoUpdater_103659.xversion ) {
                        if(confirm('Do you want to turn off auto updating for this script?')) {
                            //GM_setValue('updated_103659', 'off');
							GlobalOptions.ptupdate = false;
							GM_setValue ('Options_??', JSON2.stringify(GlobalOptions));
                            AutoUpdater_103659.enable();
                            alert('Automatic updates can be re-enabled for this script from the User Script Commands submenu.');
                        }
                    }
                }
            );
                                      
        } else if (response){
        	alert('No updates available for '+this.name);
        }
    },
    check: function(tf) {
        if (!tf){
            this.enable();
        } else {
            if (+this.time > (+GM_getValue('updated_103659', 0) + 1000*60*60*24*this.days)) {
                GM_setValue('updated_103659', this.time+'');
                this.call(false, true);
            }
            GM_registerMenuCommand("Check "+this.name+" for updates", function() {
                GM_setValue('updated_103659', new Date().getTime()+'');
                AutoUpdater_103659.call(true, true)
            });
        }
    }
};
if (typeof(GM_xmlhttpRequest) !== 'undefined' && typeof(GM_updatingEnabled) === 'undefined') { // has an updater?
    try {
        if (unsafeWindow.frameElement === null) {
            AutoUpdater_103659.check(GlobalOptions.ptupdate);
        }
    } catch(e) {
        AutoUpdater_103659.check(GlobalOptions.ptupdate);
    }
}
    
/********* End updater code *************/

// TODO: Handle multiple instances altering same function!!   ****************************
var CalterUwFunc = function (funcName, findReplace) {
  var t = this;
  this.isEnabled = false;
  this.isAvailable = isAvailable;
  this.setEnable = setEnable;
  this.funcOld = null;  
  this.funcNew = null;
  try {
    var x = funcName.split('.');
    var f = unsafeWindow;
    for (var i=0; i<x.length; i++)
      f = f[x[i]];
    ft = f.toString();
    this.funcOld = f;
    var rt = ft.replace ('function '+ funcName, 'function');
    for (var i=0; i<findReplace.length; i++){
      x = rt.replace(findReplace[i][0], findReplace[i][1]);
      if (x == rt)  // if not found
        return;
      rt = x;
    }
    this.funcNew = rt;
  } catch (err) {
  }
      
  function setEnable (tf){
    if (t.funcNew == null)
      return;
    if (t.isEnabled != tf){
      if (tf){
//      	var scr = document.createElement('script');   
//      	scr.innerHTML = funcName +' = '+ t.funcNew;
//      	document.body.appendChild(scr);
//        setTimeout ( function (){document.body.removeChild(scr);}, 500);
		uW.uwuwuwFunc(funcName +' = '+ t.funcNew);
      	t.isEnabled = true;
      } else {
      var x = funcName.split('.');
      var f = unsafeWindow;
      for (var i=0; i<x.length-1; i++)
        f = f[x[i]];
      f[x[x.length-1]] = this.funcOld;
        t.isEnabled = false;
      }
    }
  }
  function isAvailable (){
    if (t.funcNew == null)
      return false;
    return true;
  }
};

function ShowExtraInfo(){
  alert('ineter');
  content = document.getElementById('mod_citylist').innerHTML
  content += "O";
	document.getElementById('mod_citylist').innerHTML = content; 
}

var WarnZeroAttack = {
  modalAttackFunc : null,  
  
  init : function (){
    var t = WarnZeroAttack;
    t.modalAttackFunc = new CalterUwFunc ('modal_attack', [['modal_attack_check()', 'modalAttack_hook()']]);
    uW.modalAttack_hook = t.hook;
    t.modalAttackFunc.setEnable(Options.fixWarnZero);
  },
   
  setEnable : function (tf){
    var t = WarnZeroAttack;
    t.modalAttackFunc.setEnable (tf);
  },
  
  isAvailable : function (){
    var t = WarnZeroAttack;
    return t.modalAttackFunc.isAvailable();
  },
    
  hook : function (){
    var t = WarnZeroAttack;
    if (parseIntZero(document.getElementById('modal_attack_target_coords_x').value) == 0
    && parseIntZero(document.getElementById('modal_attack_target_coords_y').value) == 0){
      new CdialogCancelContinue ('<SPAN class=boldRed>You are about to march to location 0,0!</span>', null, uW.modal_attack_check, document.getElementById('modalInner1'));      
    } else {
      uW.modal_attack_check();
    }
  },
  
}

function distance (d, f, c, e) {
  var a = 750;
  var g = a / 2;
  var b = Math.abs(c - d);
  if (b > g)
    b = a - b;
  var h = Math.abs(e - f);
  if (h > g)
    h = a - h;
  return Math.round(100 * Math.sqrt(b * b + h * h)) / 100;
};

var MapDistanceFix = {
  popSlotsFunc : null,
  init : function (){
    var t = MapDistanceFix;
    t.popSlotsFunc = new CalterUwFunc ('MapObject.prototype.populateSlots', [['this.distance', 'fixMapDistance_hook']]);
    if (t.popSlotsFunc.isAvailable()){
      uW.fixMapDistance_hook = t.fixMapDistance_hook;
      if (Options.fixMapDistance)
        t.enable (true);

    }
  },
  fixMapDistance_hook : function (cityX, cityY, tileX, tileY){
    var city = Cities.byID[uW.currentcityid];
    return distance (city.x, city.y, tileX, tileY);
  },
  enable : function (tf){
    var t = MapDistanceFix;
    t.popSlotsFunc.setEnable (tf);
  },
  isAvailable : function (){
    var t = MapDistanceFix;
    //return t.popSlotsFunc.isAvailable();
	return false;
  },
}


var tabManager = {
  tabList : {},           // {name, obj, div}
  currentTab : null,
  
  init : function (mainDiv){
    var t = tabManager;
    var sorter = [];
    for (k in Tabs){
      if (!Tabs[k].tabDisabled){  
        t.tabList[k] = {};
        t.tabList[k].name = k;
        t.tabList[k].obj = Tabs[k];
        if (Tabs[k].tabLabel != null)
          t.tabList[k].label = Tabs[k].tabLabel;
        else
          t.tabList[k].label = k;
        if (Tabs[k].tabOrder != null)
          sorter.push([Tabs[k].tabOrder, t.tabList[k]]);
        else
          sorter.push([1000, t.tabList[k]]);
        t.tabList[k].div = document.createElement('div');
      }
    }

    sorter.sort (function (a,b){return a[0]-b[0]});
    var m = '<TABLE cellspacing=3 class=ptMainTab><TR>';
	for (var i=0; i<sorter.length; i++) {
      m += '<TD align=center class=notSel id=pttc'+ sorter[i][1].name +' ><A><SPAN>'+ sorter[i][1].label +'</span></a></td>';
      //m += '<TD align=center class=notSel id=pttc'+ sorter[i][1].name +' ><A><SPAN>'+ sorter[i][1].label +'</span></a></td>';
      if (i==9) m+='</tr><TR>';
    }
	m+='</tr></table>';
    //m += '<TD class=spacer width=90% align=right>'+ Version +'&nbsp;</td></tr></table>';
    mainPop.getTopDiv().innerHTML = m;
    
    t.currentTab = null;
    for (k in t.tabList) {
      if (t.tabList[k].name == Options.currentTab)
        t.currentTab = t.tabList[k] ;
      document.getElementById('pttc'+ k).addEventListener('click', this.e_clickedTab, false);
      var div = t.tabList[k].div; 
      div.style.display = 'none';
      div.style.height = '100%';
      div.style.maxWidth = '1200px';
      div.style.overflowX = 'auto';
      mainDiv.appendChild(div);
      try {
        t.tabList[k].obj.init(div);
      } catch (e){
        div.innerHTML = "INIT ERROR: "+ e;
      }
    }
    if (t.currentTab == null)
      t.currentTab = sorter[0][1];    
    t.setTabStyle (document.getElementById ('pttc'+ t.currentTab.name), true);
    t.currentTab.div.style.display = 'block';
  },
  
  hideTab : function (){
    var t = tabManager;
    t.currentTab.obj.hide();
  },
  
  showTab : function (){
    var t = tabManager;
    t.currentTab.obj.show();
  },
    
  setTabStyle : function (e, selected){
    if (selected){
      e.className = 'sel';
    } else {
      e.className = 'notSel';
    }
  },
  
  e_clickedTab : function (e){
    var t = tabManager;
    var newTab = t.tabList[e.target.parentNode.parentNode.id.substring(4)];
    if (t.currentTab.name != newTab.name){
      t.setTabStyle (document.getElementById ('pttc'+ t.currentTab.name), false);
      t.setTabStyle (document.getElementById ('pttc'+ newTab.name), true);
      t.currentTab.obj.hide ();
      t.currentTab.div.style.display = 'none';
      t.currentTab = newTab;
      newTab.div.style.display = 'block';
      Options.currentTab = newTab.name;      
    }
    newTab.obj.show();
  },
}


function setTabStyle (e, selected){
  if (selected){
    e.className = 'matTabSel';
  } else {
    e.className = 'matTabNotSel';
  }
}

function clickedTab (e){
  who = e.target.id.substring(2);
  newObj = my[who];
  currentObj = my[currentName];
  if (currentName != who){
    setTabStyle (document.getElementById ('aa'+currentName), false);
    setTabStyle (document.getElementById ('aa'+who), true);
    if (currentObj){
      currentObj.hide ();
      currentObj.getContent().style.display = 'none';
    }
    currentName = who;
    cont = newObj.getContent();
    newObj.getContent().style.display = 'block';
  }
  newObj.show();
}

function mouseMainTab (me){
  if (me.button == 2){
    var c = getClientCoords (document.getElementById('main_engagement_tabs'));
    mainPop.setLocation ({x: c.x+4, y: c.y+c.height});
  }
}

function eventHideShow (){
  if (mainPop.toggleHide(mainPop)){
    tabManager.showTab();
    Options.ptWinIsOpen = true;
  } else {
    tabManager.hideTab();
    Options.ptWinIsOpen = false;
  }
  saveOptions();
}

function hideMe (){
  if (!Options.ptWinIsOpen)
    return;
  mainPop.show (false);
  tabManager.showTab();
  Options.ptWinIsOpen = false;
  saveOptions();
}
function showMe (){
  mainPop.show (true);
  tabManager.showTab();
  Options.ptWinIsOpen = true;
  saveOptions();
}


function addMyFunction (func){      // add function to run in our own scope
  unsafeWindow[func.name] = func;
}

function addUwFunction (func){      // add function to run in unsafeWindow's scope
  scr = document.createElement('script');
	scr.innerHTML = func.toString();
	document.body.appendChild(scr);
}

function alterUwFunction (funcName, frArray){
  try {
    funcText = unsafeWindow[funcName].toString();
    rt = funcText.replace ('function '+funcName, 'function');
    for (i=0; i<frArray.length; i++){
      x = rt.replace(frArray[i][0], frArray[i][1]);
      if (x == rt)
        return false;
      rt = x;
    }
    js = funcName +' = '+ rt;
  	var scr=document.createElement('script');
  	scr.innerHTML=js;
  	document.body.appendChild(scr);
  	return true;
  } catch (err) {
    return false;
  }
}

function setCities(){
  Cities.numCities = Seed.cities.length;
  Cities.cities = [];
  Cities.byID = {};
  for (i=0; i<Cities.numCities; i++){
    city = {};
    city.idx = i;
    city.id = parseInt(Seed.cities[i][0]);
    city.name = Seed.cities[i][1];
    city.x = parseInt(Seed.cities[i][2]);
    city.y = parseInt(Seed.cities[i][3]);
    city.tileId = parseInt(Seed.cities[i][5]);
    city.provId = parseInt(Seed.cities[i][4]);
	getTroopDefTrainEstimates('city'+ city.id, city);
    Cities.cities[i] = city;
    Cities.byID[Seed.cities[i][0]] = city;
  }
}

function getTroopDefTrainEstimates (cityID, city){
	var b = Seed.buildings[cityID];
	city.numCottages = 0;
	city.numBarracks = 0;
	city.maxBarracks = 0;
	city.totLevelsBarracks = 0;
	city.blacksmithLevel = 0;
	city.stableLevel = 0;
	city.workshopLevel = 0;
	city.wallLevel = 0;
	for (var j=1; j<33; j++){
		if (b['pos'+j]) {
			var bname = parseInt(b['pos'+j][0]);
			var blvl = parseInt(b['pos'+j][1]);
			switch(bname){
				case 13:
					city.numBarracks++;
					city.totLevelsBarracks += parseInt(blvl);
					if (blvl>city.maxBarracks) city.maxBarracks=blvl;
					break;
				case 5:
					city.numCottages++;
					break;
				case 15:
					city.blacksmithLevel = blvl;
					break;
				case 16:
					city.workshopLevel = blvl;
					break;
				case 17:
					city.stableLevel = blvl;
					break;
				case 19:
					city.wallLevel = blvl;
					break;
			}
		}
	}

	var now = unixTime();
	city.marshallCombatScore = 0;
	var s = Seed.knights[cityID];
	if (s) {
		s = s["knt" + Seed.leaders[cityID].combatKnightId];
		if (s){
			city.marshallCombatScore = s.combat;
			if (s.combatBoostExpireUnixtime > now)
				city.marshallCombatScore *= 1.25;
		}
	}
	city.foremanBasePoliticsScore = 0;
	var s = Seed.knights[cityID];
	if (s) {
		s = s["knt" + Seed.leaders[cityID].politicsKnightId];
		if (s){
			city.foremanBasePoliticsScore = s.politics;
			if (s.politicsBoostExpireUnixtime > now)
				city.foremanBasePoliticsScore *= 1.25;
		}
	}

	city.loggingLevel = parseInt(Seed.tech["tch2"]);
	city.geometryLevel = parseInt(Seed.tech["tch5"]);
	city.eagleEyesLevel = parseInt(Seed.tech["tch6"]);
	city.poisonedEdgeLevel = parseInt(Seed.tech["tch8"]);
	city.metalAlloysLevel = parseInt(Seed.tech["tch9"]);
	city.featherweightPowderLevel = parseInt(Seed.tech["tch10"]);
	city.alloyHorseshoesLevel = parseInt(Seed.tech["tch12"]);
	city.fletchingLevel = parseInt(Seed.tech["tch13"]);
	city.giantsStrengthLevel = parseInt(Seed.tech["tch16"]);

	var bm = city.numBarracks + 0.1 * (city.totLevelsBarracks - city.numBarracks);
	var mf = city.marshallCombatScore / 200;
	var gf = city.geometryLevel / 10;
	var sf = city.stableLevel / 10;
	var wf = city.workshopLevel / 10;
	var isf = bm * (1 + mf + gf);
	var csf = bm * (1 + mf + gf + sf);
	var ssf = bm * (1 + mf + gf + sf + wf);
	var pf = city.foremanBasePoliticsScore / 200;
	var gsf = city.giantsStrengthLevel / 10;
	var dsf = 1 + pf + gsf;

	
	city.Troop1Time = ((city.maxBarracks > 0)?(50/isf):0);
	city.Troop2Time = city.Troop1Time/2;
	city.Troop3Time = ((city.maxBarracks > 1 && city.eagleEyesLevel > 0)?(100/isf):0);
	city.Troop4Time = ((city.maxBarracks > 1 && city.poisonedEdgeLevel > 0)?(150/isf):0);
	city.Troop5Time = ((city.maxBarracks > 2 && city.blacksmithLevel > 0 && city.metalAlloysLevel > 0)?(225/isf):0);
	city.Troop6Time = ((city.maxBarracks > 3 && city.fletchingLevel > 0)?(350/isf):0);
	city.Troop7Time = ((city.maxBarracks > 4 && city.stableLevel > 0 && city.alloyHorseshoesLevel > 0)?(500/csf):0);
	city.Troop8Time = ((city.maxBarracks > 6 && city.blacksmithLevel > 4 && city.stableLevel > 4 && city.alloyHorseshoesLevel > 4)?(1500/csf):0);
	city.Troop9Time = ((city.maxBarracks > 5 && city.stableLevel > 0 && city.workshopLevel > 2 && city.featherweightPowderLevel > 0)?(1000/ssf):0);
	city.Troop10Time = ((city.maxBarracks > 7 && city.stableLevel > 1 && city.workshopLevel > 4 && city.geometryLevel > 4 && city.fletchingLevel > 5)?(3000/ssf):0);
	city.Troop11Time = ((city.maxBarracks > 8 && city.blacksmithLevel > 4 && city.stableLevel > 2 && city.workshopLevel > 6 && city.metalAlloysLevel > 7 && city.geometryLevel > 6)?(4500/ssf):0);
	city.Troop12Time = ((city.maxBarracks > 9 && city.stableLevel > 1 && city.workshopLevel > 8 && city.geometryLevel > 9 && city.fletchingLevel > 9)?(6000/ssf):0);
	city.Def53Time = ((city.wallLevel > 5 && city.blacksmithLevel > 5 && city.fletchingLevel > 4)?(180/dsf):0);
	city.Def55Time = ((city.wallLevel > 7 && city.blacksmithLevel > 7 && city.fletchingLevel > 6 && city.geometryLevel > 6)?(135/dsf):0);
	city.Def60Time = ((city.wallLevel > 3 && city.blacksmithLevel > 3 && city.poisonedEdgeLevel > 1)?(90/dsf):0);
	city.Def61Time = ((city.wallLevel > 0 && city.metalAlloysLevel > 0)?(30/dsf):0);
	city.Def62Time = ((city.wallLevel > 1 && city.blacksmithLevel > 1 && city.loggingLevel > 1)?(60/dsf):0);
}


function officerId2String (oid){
  if (oid==null)
    return '';
  else if (oid==3) 	
    return uW.allianceOfficerTypeMapping[3];
  else if (oid==2)
    return uW.allianceOfficerTypeMapping[2];
  else if (oid==1)
    return uW.allianceOfficerTypeMapping[1];
  else if (oid==4)
      return uW.allianceOfficerTypeMapping[4];
  return '';
}


// onClick (city{name, id, x, y}, x, y)   city may be null!
function CdispCityPicker (id, span, dispName, notify, selbut){
  function CcityButHandler (t){
    var that = t;
    this.clickedCityBut = clickedCityBut;
    function clickedCityBut (e){
      if (that.selected != null)
        that.selected.className = "ptcastleBut ptcastleButNon";
      that.city = Cities.cities[e.target.id.substr(that.prefixLen)];
      if (that.dispName)
        document.getElementById(that.id+'cname').innerHTML = that.city.name;
      e.target.className = "ptcastleBut ptcastleButSel";
      that.selected = e.target;
      if (that.coordBoxX){
        that.coordBoxX.value = that.city.x;
        that.coordBoxY.value = that.city.y;
        that.coordBoxX.style.backgroundColor = '#ffffff';
        that.coordBoxY.style.backgroundColor = '#ffffff';
      }
      if (that.notify != null)
        that.notify(that.city, that.city.x, that.city.y);
    }
  }

  function selectBut (idx){
    document.getElementById(this.id+'_'+idx).click();
  }

  function bindToXYboxes (eX, eY){
    function CboxHandler (t){
      var that = t;
      this.eventChange = eventChange;
      if (that.city){
        eX.value = that.city.x;
        eY.value = that.city.y;
      }
      function eventChange (){
			var xValue=that.coordBoxX.value.trim();
			var xI=/^\s*([0-9]+)[\s,]+([0-9]+)/.exec(xValue); 		
			if(xI) {
				that.coordBoxX.value=xI[1]
				that.coordBoxY.value=xI[2]
			}
        var x = parseInt(that.coordBoxX.value, 10);
        var y = parseInt(that.coordBoxY.value, 10);
        if (isNaN(x) || x<0 || x>750){
          that.coordBoxX.style.backgroundColor = '#ff8888';
          return;
        }
        if (isNaN(y) || y<0 || y>750){
          that.coordBoxY.style.backgroundColor = '#ff8888';
          return;
        }
        that.coordBoxX.style.backgroundColor = '#ffffff';
        that.coordBoxY.style.backgroundColor = '#ffffff';
        if (that.notify != null)
          that.notify (null, x, y);
      }
    }
    this.coordBoxX = eX;
    this.coordBoxY = eY;
    var bh = new CboxHandler(this);
    eX.size=2;
    eX.maxLength=10;
    eY.size=2;
    eY.maxLength=3;
    eX.addEventListener('change', bh.eventChange, false);
    eY.addEventListener('change', bh.eventChange, false);
  }

  this.selectBut = selectBut;
  this.bindToXYboxes = bindToXYboxes;
  this.coordBoxX = null;
  this.coordBoxY = null;
  this.id = id;
  this.dispName = dispName;
  this.prefixLen = id.length+1;
  this.notify = notify;
  this.selected = null;
  this.city = null;
  var m = '';
  for (var i=0; i<Cities.cities.length; i++)
    m += '<INPUT class="ptcastleBut ptcastleButNon" id="'+ id +'_'+ i +'" value="'+ (i+1) +'" type=submit \>';
  if (dispName)
    m += ' &nbsp; <SPAN style="display:inline-block; width:85px; font-weight:bold;" id='+ id +'cname' +'></span>';
  span.innerHTML = m;
  var handler = new CcityButHandler(this);
  for (var i=0; i<Cities.cities.length; i++)
    document.getElementById (id+'_'+i).addEventListener('click', handler.clickedCityBut, false);
  if (selbut != null)
    this.selectBut(selbut);
};


function CdialogCancelContinue (msg, canNotify, contNotify, centerElement){
  var pop = new CPopup ('ptcancont', 0, 0, 400,200, true, canNotify);
  if (centerElement)
    pop.centerMe(centerElement);
  else
    pop.centerMe(document.body);
  pop.getTopDiv().innerHTML = '<CENTER>KOC Power Tools</center>';
  pop.getMainDiv().innerHTML = '<TABLE class=ptTab align=center style="height: 100%"><TR align=center height=90%><TD>'+ msg +'</td></tr>\
      <TR align=center><TD><INPUT id=ptcccancel type=submit value="CANCEL" \> &nbsp; &nbsp; <INPUT id=ptcccontin type=submit value="CONTINUE" \></td></tr></table>';
  document.getElementById('ptcccancel').addEventListener ('click', function (){pop.show(false); if (canNotify) canNotify();}, false);
  document.getElementById('ptcccontin').addEventListener ('click', function (){pop.show(false); if (contNotify) contNotify();}, false);
  pop.show(true);
}


// TODO: make class (multiple instances needed)
function dialogRetry (errMsg, errCode, seconds, onRetry, onCancel){
  seconds = parseInt(seconds);
  var pop = new CPopup ('ptretry', 0, 0, 400,200, true);
  pop.centerMe(mainPop.getMainDiv());
  pop.getTopDiv().innerHTML = '<CENTER>KOC Power Tools</center>';
  pop.getMainDiv().innerHTML = '<CENTER><BR><FONT COLOR=#550000><B>An error has ocurred:</b></font><BR><BR><DIV id=paretryErrMsg></div>\
      <BR><BR><B>Automatically retrying in <SPAN id=paretrySeconds></b></span> seconds ...<BR><BR><INPUT id=paretryCancel type=submit value="CANCEL Retry" \>';
  document.getElementById('paretryCancel').addEventListener ('click', doCancel, false);
  pop.show(true);
  
  if(errCode && unsafeWindow.g_js_strings.errorcode['err_'+errCode])
	document.getElementById('paretryErrMsg').innerHTML = unsafeWindow.g_js_strings.errorcode['err_'+errCode];
  else
	document.getElementById('paretryErrMsg').innerHTML = errMsg;
  document.getElementById('paretrySeconds').innerHTML = seconds;
  var rTimer = setTimeout (doRetry, seconds*1000);
  countdown ();

  function countdown (){
    document.getElementById('paretrySeconds').innerHTML = seconds--;
    if (seconds > 0)
      cdTimer = setTimeout (countdown, 1000);
  }
  function doCancel(){
    clearTimeout (rTimer);
    clearTimeout (cdTimer);
    pop.destroy();
    onCancel ();
  }
  function doRetry (){
    clearTimeout (rTimer);
    clearTimeout (cdTimer);
    pop.show(false);
    onRetry();
  }
}



function implodeUrlArgs (obj){
  var a = [];
  for (var k in obj)
    a.push (k +'='+ encodeURI(obj[k]) );
  return a.join ('&');    
}

// NOTE: args can be either a string which will be appended as is to url or an object of name->values
function addUrlArgs (url, args){
  if (!args)
    return url;
  if (url.indexOf('?') < 0)
    url += '?';
  else if (url.substr(url.length-1) != '&')
    url += '&';    
  if (matTypeof(args == 'object'))
    return url + implodeUrlArgs (args);    
  return url + args;
}

// emulate protoype's Ajax.Request ...
function AjaxRequest (url, opts){
  var headers = {
    'X-Requested-With': 'XMLHttpRequest',
    'X-Prototype-Version': '1.6.1',
    'Accept': 'text/javascript, text/html, application/xml, text/xml, */*'
  };
  var ajax = null;

if (DEBUG_TRACE_AJAX) logit ("AJAX: "+ url +"\n" + inspect (opts, 3, 1));  
    
  if (window.XMLHttpRequest)
    ajax=new XMLHttpRequest();
  else
    ajax=new ActiveXObject("Microsoft.XMLHTTP");
  
  if (opts.method==null || opts.method=='')
    method = 'GET';
  else
    method = opts.method.toUpperCase();  
    
  if (method == 'POST'){
    headers['Content-type'] = 'application/x-www-form-urlencoded; charset=UTF-8';
  } else if (method == 'GET'){
    addUrlArgs (url, opts.parameters);
  }

  ajax.onreadystatechange = function(){
//  ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete']; states 0-4
    if (ajax.readyState==4) {
      if (ajax.status >= 200 && ajax.status < 305)
        if (opts.onSuccess) opts.onSuccess(ajax);
      else
        if (opts.onFailure) opts.onFailure(ajax);
    } else {
      if (opts.onChange) opts.onChange (ajax);
    }
  }  
    
  ajax.open(method, url, true);   // always async!

  for (var k in headers)
    ajax.setRequestHeader (k, headers[k]);
  if (matTypeof(opts.requestHeaders)=='object')
    for (var k in opts.requestHeaders)
      ajax.setRequestHeader (k, opts.requestHeaders[k]);
      
  if (method == 'POST'){
    var a = [];
    for (k in opts.parameters)
      a.push (k +'='+ opts.parameters[k] );
    ajax.send (a.join ('&'));
  } else               {
    ajax.send();
  }
}   



function MyAjaxRequest (url, o, noRetry){
if (DEBUG_TRACE) logit (" 0 myAjaxRequest: "+ url +"\n" + inspect (o, 2, 1));
  var opts = uW.Object.clone(o);
  var wasSuccess = o.onSuccess;
  var wasFailure = o.onFailure;
  var retry = 0;
  var delay = 5;
  var noRetry = noRetry===true?true:false;
  opts.onSuccess = mySuccess;
  opts.onFailure = myFailure;

if (DEBUG_TRACE) logit (" 1a myAjaxRequest: "+ url +"\n" + inspect (o, 2, 1));
  new AjaxRequest(url, opts);
  return;

  function myRetry(){
    ++retry;
    new AjaxRequest(url, opts);
    delay = delay * 1.25;
  }

  function myFailure(){
    var o = {};
if (DEBUG_TRACE) logit ("myAjaxRequest.myFailure(): "+ inspect(rslt, 1, 1));
    o.ok = false;
    o.errorMsg = "AJAX Communication Failure";
    wasFailure (o);
  }

  function mySuccess (msg){
    var rslt = eval("(" + msg.responseText + ")");
    var x;
    if (rslt.ok){
if (DEBUG_TRACE) logit (" 1b myAjaxRequest.mySuccess(): "+ inspect(rslt, 1, 1));
      rslt.errorMsg = null;   ///// !!!!!!!!!!!!!  ************
      if (rslt.updateSeed)
        uW.update_seed(rslt.updateSeed);
      wasSuccess (rslt);
      return;
    }
if (DEBUG_TRACE) logit (" 1b myAjaxRequest.mySuccess() !ok : "+ inspect(rslt, 3, 1));
    rslt.errorMsg = uW.printLocalError((rslt.error_code || null), (rslt.msg || null), (rslt.feedback || null));
    /*if ( (x = rslt.errorMsg.indexOf ('<br><br>')) > 0)
      rslt.errorMsg = rslt.errorMsg.substr (0, x-1);*/
    if (!noRetry && (rslt.error_code==0 ||rslt.error_code==8 || rslt.error_code==1 || rslt.error_code==3)){
      dialogRetry (rslt.errorMsg, rslt.error_code, delay, function(){myRetry()}, function(){wasSuccess (rslt)});
    } else {
      wasSuccess (rslt);
    }
  }
}





// returns: 'neutral', 'friendly', or 'hostile'
function getDiplomacy (aid) {
  if (Seed.allianceDiplomacies == null)
    return uW.g_js_strings.commonstr.neutral;
  if (Seed.allianceDiplomacies.friendly && Seed.allianceDiplomacies.friendly['a'+aid] != null)
    return uW.g_js_strings.commonstr.friendly;
  if (Seed.allianceDiplomacies.hostile && Seed.allianceDiplomacies.hostile['a'+aid] != null)
    return uW.g_js_strings.commonstr.hostile;
  if (aid == Seed.allianceDiplomacies.allianceId)
    return uW.g_js_strings.modaltitles.alliance;
  return uW.g_js_strings.commonstr.neutral;
};

function getMyAlliance (){
  if (Seed.allianceDiplomacies==null || Seed.allianceDiplomacies.allianceName==null)
    return [0, 'None'];
  else
    return [Seed.allianceDiplomacies.allianceId, Seed.allianceDiplomacies.allianceName];
}



// TODO: Check times for expired marches !?!?!
// note: unselected city has outdated info

function getMarchInfo (){
  var ret = {};

  ret.marchUnits = [];
  ret.returnUnits = [];
  ret.resources = [];
  for (i=0; i<14; i++){
    ret.marchUnits[i] = 0;
    ret.returnUnits[i] = 0;
  }
  for (i=0; i<5; i++){
    ret.resources[i] = 0;
  }

  var now = unixTime();

  for(i=0; i<Cities.numCities; i++) {   // each city
    cityID = 'city'+ Cities.cities[i].id;
    for (k in Seed.queue_atkp[cityID]){   // each march
      march = Seed.queue_atkp[cityID][k];
      if (typeof (march) == 'object'){
        for (ii=0; ii<14; ii++){
          ret.marchUnits[ii] += parseInt (march['unit'+ ii +'Count']);
          ret.returnUnits[ii] += parseInt (march['unit'+ ii +'Return']);
        }
        for (ii=1; ii<5; ii++){
          ret.resources[ii] += parseInt (march['resource'+ ii]);
        }
          ret.resources[0] += parseInt (march['gold']);
      }
// TODO: fixup completed marches
// TODO: Assume transport is complete ?
    }
  }
  return ret;
}

function getTrainInfo (){
  var ret = {};

  ret.trainUnts = [];
  for (i=0; i<14; i++){
    ret.trainUnts[i] = 0;
  }
  
  var q = Seed.queue_unt;
  for(i=0; i<Cities.numCities; i++) {   // each city
    cityID = 'city'+ Cities.cities[i].id;
	q = Seed.queue_unt[cityID];
	if (q && q.length>0){
	  for (qi=0; qi<q.length; qi++)
          ret.trainUnts[q[qi][0]] += parseInt(q[qi][1]);
	  }
    }
  return ret;
}

var fortNamesShort = {
  53: "Crossbows",
  55: "Trebuchet",
  60: "Trap",
  61: "Caltrops",
  62: "Spiked Barrier",
}

// returns {count, maxlevel}
function getCityBuilding (cityId, buildingId){
  var b = Seed.buildings['city'+cityId];
  var ret = {count:0, maxLevel:0};
  for (var i=1; i<33; i++){
    if (b['pos'+i] && b['pos'+i][0] == buildingId){
      ++ret.count;
      if (parseInt(b['pos'+i][1]) > ret.maxLevel)
        ret.maxLevel = parseInt(b['pos'+i][1]);
    }
  }
  return ret;
}
function getCityPrestige (cityId){
	return Seed.cityData.city[cityId].isPrestigeCity;
}
//djf	
function getCityPrestigeLevel (cityId){
	return Seed.cityData.city[cityId].prestigeInfo.prestigeLevel;
	//return Seed.cityData.city[cityId].isPrestigeCity;
}

// example: http://www150.kingdomsofcamelot.com
function GetServerId() {
  var m=/^[a-zA-Z]+([0-9]+)\./.exec(document.location.hostname);
  if(m)
    return m[1];
  return '';
}

function logit (msg){
  var serverID = GetServerId();
  var now = new Date();
  GM_log (serverID +' @ '+ now.toTimeString().substring (0,8) +'.' + now.getMilliseconds() +': '+  msg);
}

function ById (id){
	return document.getElementById(id);
}


/************ DEBUG WIN *************/
var debugWin = {
	popDebug:			null,
	dbDefaultNot:	'tech,tutorial,items,quests,wilderness,wildDef,buildings,knights,allianceDiplomacies,appFriends,players',
	dbSelect:			{},
	sortSeed:			[],
	sortNonSeed:	[],

	doit: function (){
		var t = debugWin;

		function syncBoxes (){
			for (var i=0; i<t.sortSeed.length; i++){
				var name = t.sortSeed[i];
				var box = document.getElementById('dbpop_'+name);
				box.checked = t.dbSelect[name];
			}
		}
		function clickedAll (){
			for (var k in t.dbSelect)
				t.dbSelect[k] = true;
			syncBoxes();
		}
		function clickedNone (){
			for (var k in t.dbSelect)
				t.dbSelect[k] = false;
			syncBoxes();
		}
		function clickedDefaults (){
			for (k in t.dbSelect)
				t.dbSelect[k] = true;
			var not = t.dbDefaultNot.split(',');
			for (var i=0; i<not.length; i++)
				t.dbSelect[not[i]] = false;
			syncBoxes();
		}
		function clickedShow (){
			var resultsDiv = document.getElementById('idDebugResultsDiv')
			var s = '<PRE>';
			for (var i=0; i<t.sortSeed.length; i++){
				var name = t.sortSeed[i];
				var box = document.getElementById('dbpop_'+name);
				if (box.checked)
					s += name + " =\n" + inspect (Seed[name], 10, 1);
			}
			resultsDiv.innerHTML = s + '</PRE>';
		}

		function clickedShowNonSeed (){
			var resultsDiv = document.getElementById('idDebugResultsDiv');
			nsvalue = document.getElementById('dbnonseed').value;
			if (nsvalue != '') {
				val = unsafeWindow[nsvalue];
				valtype = typeof(val);
				resultsDiv.innerHTML = '<PRE>(' + valtype + ') ' + nsvalue + ((valtype == 'string')?(" = " + val):(" =\n" + inspect (val, 10, 1))) + '</PRE>';
			}
		}

		function clickedShowScripts (){
			var resultsDiv = document.getElementById('idDebugResultsDiv')
			var scripts = document.getElementsByTagName('script');
			var s = '';
			for (var i=0; i<scripts.length; i++)
				if (scripts[i].src!=null && scripts[i].src!='')
					s+='<A TARGET=_tab HREF="'+ scripts[i].src +'">'+ scripts[i].src +'</A><BR />';
			resultsDiv.innerHTML = s;
		}

		if (t.popDebug == null){
			t.popDebug = new CPopup ('db', 0, 45, 749, 900, true);
			t.popDebug.getTopDiv().innerHTML = '<DIV align=center><B>DEBUG</B></DIV>';
			var sl = 0;
			for (var k in Seed) {
				t.dbSelect[k] = true;
				t.sortSeed[sl] = k;
				sl++;
			}
			t.sortSeed.sort();
			sl = 0;
			for (var k in unsafeWindow) {
				kType = typeof(unsafeWindow[k]);
				if ((k.indexOf('actionlink_data') != 0) && (k != 'content') && (k != 'document') && (k.indexOf('feed') != 0) && (k.indexOf('frame') != 0) && (k != 'globalStorage') &&
					(k != 'g_mapObject') && (k != 'history') && (k != 'Modal') && (k != 'navigator') && (k != 'parent') && (k.indexOf('pb') != 0) && (k.indexOf('pt') != 0) && (k != 'seed') &&
					(k != 'self') && (k.indexOf('template_data') != 0) && (k != 'that') && (k != 'window') && (k != '_htmlElement') && (kType != 'function') && (kType != 'undefined')) {
					t.sortNonSeed[sl] = k;
					sl++;
				}
			}
			t.sortNonSeed.sort(function(x,y) {var a = String(x).toUpperCase(); var b = String(y).toUpperCase(); if (a > b) return 1; else if (a < b) return -1; else return 0;});
			var nsSelect = '<SELECT id="dbnonseed"><OPTION value="" ></option>';
			for (var i=0; i<t.sortNonSeed.length; i++)
				nsSelect += '<OPTION value="' + t.sortNonSeed[i] + '" >' + t.sortNonSeed[i] + '</option>';
			nsSelect += '</SELECT>';
			var not = t.dbDefaultNot.split(',');
			for (var i=0; i<not.length; i++)
				t.dbSelect[not[i]] = false;
			var m = '<DIV class=ptentry><B>Seed: </B><INPUT type=submit id=dbsuball value=ALL>&nbsp;<INPUT type=submit id=dbsubnone value=NONE>&nbsp;' +
				'<INPUT type=submit id=dbdefaults value=DEFAULTS>&nbsp;<INPUT type=submit id=dbsubdo value=SHOW>&nbsp;<INPUT type=submit id=dbsubscripts value=SCRIPTS><BR /><TABLE width=100%>';
			var cols = 5;
			var entries = t.sortSeed.length;
			var rows = parseInt (0.99 + entries / cols);
			for (var rowno=1; rowno<=rows; rowno++) {
				m += '<TR>';
				for (colno=1; colno<=cols; colno++) {
					var slvalue = rows*(colno-1)+rowno-1;
					m += ((slvalue < entries)?('<TD class=xtab><INPUT type=checkbox id="dbpop_'+t.sortSeed[slvalue]+'">&nbsp;'+t.sortSeed[slvalue]+'</TD>'):'<TD class=xtab></TD>');
				}
				m += '</TR>';
			}
			m += '</TABLE><B>Non-Seed: </B>' + nsSelect + '</DIV><DIV id="idDebugResultsDiv" style="width:738px; height:600px; max-height:600px; overflow-y:auto; white-space:pre-wrap;"></DIV>';
			t.popDebug.getMainDiv().innerHTML = m;
			document.getElementById('dbsuball').addEventListener('click', clickedAll, false);
			document.getElementById('dbsubnone').addEventListener('click', clickedNone, false);
			document.getElementById('dbdefaults').addEventListener('click', clickedDefaults, false);
			document.getElementById('dbsubdo').addEventListener('click', clickedShow, false);
			document.getElementById('dbsubscripts').addEventListener('click', clickedShowScripts, false);
			document.getElementById('dbnonseed').addEventListener('change', clickedShowNonSeed, false);
			syncBoxes();
		}
		t.popDebug.show (true);
	},
}


function saveOptions (){
  var serverID = GetServerId();
  GM_setValue ('Options_'+serverID, JSON2.stringify(Options));
}

function readOptions (){
  var serverID = GetServerId();
  s = GM_getValue ('Options_'+serverID);
  if (s != null){
    opts = JSON2.parse (s);
    for (k in opts)
      Options[k] = opts[k];
  }
}

function readGlobalOptions (){
  GlobalOptions = JSON2.parse (GM_getValue ('Options_??', '{}'));
}

function saveColors (){
  var serverID = GetServerId();
  GM_setValue ('Colors_'+serverID, JSON2.stringify(Colors));
}

function readColors (){
  var serverID = GetServerId();
  s = GM_getValue ('Colors_'+serverID);
  if (s != null){
    opts = JSON2.parse (s);
    for (k in opts)
      Colors[k] = opts[k];
  }else{
	s = GM_getValue ('Colors');
	if (s != null){
		opts = JSON2.parse (s);
		for (k in opts)
		  Colors[k] = opts[k];
	}
  }
}
function readAutoTrainOptions (){
  var serverID = GetServerId();
	s = GM_getValue ('AutoTrainOptions_'+serverID);
	if (s != null){
		opts = JSON2.parse (s);
		for (k in opts){
			if (AutoTrainOptions[k] != undefined) {
				if (matTypeof(opts[k]) == 'object') {
					for (kk in opts[k])
						if (AutoTrainOptions[k][kk] != undefined)
							AutoTrainOptions[k][kk] = opts[k][kk];
				} else
					AutoTrainOptions[k] = opts[k];
			}
		}
	}
}

function saveAutoTrainOptions (){
  var serverID = GetServerId();
	GM_setValue ('AutoTrainOptions_'+serverID, JSON2.stringify(AutoTrainOptions));
}


/***
***/
var myServers = {   // incomplete, untested
  serverlist : null,
  
  get : function (notify){
    if (myServers.serverlist){
      notify (myServers.serverlist);
      return;
    }
    var params = uW.Object.clone(uW.g_ajaxparams);
    
    new MyAjaxRequest(uW.g_ajaxpath + "ajax/myServers.php" + uW.g_ajaxsuffix, {
      method: "post",
      parameters: params,
      onSuccess: function(rslt) {
logit (inspect (rslt, 3, 1));  
        if (notify)      
          notify (myServers.serverlist);
      },
      onFailure: function(rslt) {
      }
    });
  },
};


function createButton (label){
  var a=document.createElement('a');
  a.className='button20';
  a.innerHTML='<span style="color: #ff6">'+ label +'</span>';
  return a;
}

function AddMainTabLink(text, eventListener, mouseListener) {
  var a = createButton (text);
  a.className='tab';
  var tabs=document.getElementById('main_engagement_tabs');
  if(!tabs) {
    tabs=document.getElementById('topnav_msg');
    if (tabs)
      tabs=tabs.parentNode;
  }
  if (tabs) {
    var e = tabs.parentNode;
    var gmTabs = null;
    for (var i=0; i<e.childNodes.length; i++){
      var ee = e.childNodes[i];
//if (ee.tagName=='DIV') logit ("CHILD: "+  ee.tagName +' : '+ ee.className+' : '+ ee.id);      
      if (ee.tagName && ee.tagName=='DIV' && ee.className=='tabs_engagement' &&  ee.id!='main_engagement_tabs'){
        gmTabs = ee;
        break;
      }
    }
    if (gmTabs == null){
      gmTabs = document.createElement('div');
      gmTabs.className='tabs_engagement';
      gmTabs.style.background='#ca5';
      tabs.parentNode.insertBefore (gmTabs, tabs);
      gmTabs.style.whiteSpace='normal';
      gmTabs.style.width='735px';
      gmTabs.lang = 'en_PT';
    }
    if (gmTabs.firstChild)
      gmTabs.insertBefore (a, gmTabs.firstChild);
    else
      gmTabs.appendChild(a);
    a.addEventListener('click',eventListener, false);
    if (mouseListener != null)
      a.addEventListener('mousedown',mouseListener, true);
    return a;
  }
  return null;
}

function coordLink (x, y){
  var m = [];
  m.push ('(<a onclick="ptGotoMapHide (');
  m.push (x);
  m.push (',');
  m.push (y);
  m.push ('); return false">');
  m.push (x);
  m.push (',');
  m.push (y);
  m.push ('</a>)');  
  return m.join('');
}


uW.ptGotoMapHide = function (x, y){
  try {
    uW.Modal.hideModal();
  } catch (e){ }
  try {
    Modal.hideModal();
  } catch (e){ }
  uW.ptGotoMap (x, y);  
}



uW.ptGotoMap = function (x, y){
  if (Options.hideOnGoto)
    hideMe ();
  setTimeout (function (){ 
    document.getElementById('mapXCoor').value = x;
    document.getElementById('mapYCoor').value = y;
    uW.reCenterMapWithCoor();
    var a = document.getElementById("mod_views").getElementsByTagName("a");
    for (var b = 0; b < a.length; b++) {
        a[b].className = ""
    }
    document.getElementById('mod_views_map').className = "sel";
    document.getElementById("maparea_city").style.display = 'none';
    document.getElementById("maparea_fields").style.display = 'none';
    document.getElementById("maparea_map").style.display = 'block';
    uW.tutorialClear()
  }, 0);
};


/**********************************************************************************/

function makeButton20 (label){
  var a = document.createElement('a');
  a.className = "button20 ptButton20";
  var s = document.createElement('span');
  s.innerHTML = label;
  a.appendChild (s);
  return a;
}

function strButton20 (label, tags){
  if (tags == null)
    tags = '';
  return ('<TABLE class=ptNoPad><TR><TD><A class="button20 ptButton20" '+ tags +'><SPAN>'+ label +'</span></a></td></tr></table>' );
}

function strButton14 (label, tags){
  if (tags == null)
    tags = '';
  return ('<A class="button14 ptButton20" '+ tags +'><SPAN>'+ label +'</span></a>' );
}

function cityStatusString (cs){
  if (cs==4)
    return 'V';
  if (cs==3)
    return 'T';
  if (cs==2)
    return 'BP';
  return 'N';
}    

// Simple method, as if it were typed in thru DOM
function sendChat (msg){
  document.getElementById ("mod_comm_input").value = msg;
  uW.Chat.sendChat ();
}

// works well, but message is not echoed back to local client
Chat = {
  params : null,

  sendWhisper : function (msg, who, notify){
    this.params = uW.Object.clone(uW.g_ajaxparams);
    this.params.ctype = 3;
    this.params.name = who;
    this._sendit (msg, notify);
  },

  sendGlobal : function (msg, notify){
    this.params = uW.Object.clone(uW.g_ajaxparams);
    this.params.ctype = 1;
    this._sendit (msg, notify);
  },

  sendAlliance : function (msg, notify){
    this.params = uW.Object.clone(uW.g_ajaxparams);
    this.params.ctype = 2;
    this._sendit (msg, notify);
  },

  _sendit : function (msg, notify){
    function strip(s) {
       return s.replace(/^\s+/, '').replace(/\s+$/, '');
    }
    this.params.comment = strip (msg);
    new MyAjaxRequest(uW.g_ajaxpath + "ajax/sendChat.php" + uW.g_ajaxsuffix, {
      method: "post",
      parameters: this.params,
      onSuccess: function(transport) {
        if (notify)
          notify ();
      },
      onFailure: function(transport) {
        if (notify)
          notify ();
      }
    });
  },
}

function doDefTrain (cityId, siege, unitId, num, notify){
  var time = uW.modal_walls_traintime(unitId, num);
  var params = uW.Object.clone(uW.g_ajaxparams);
  params.cid = cityId;
  params.type = unitId;
  params.quant = num;
  params.items = siege;
  new MyAjaxRequest(uW.g_ajaxpath + "ajax/fortify.php" + uW.g_ajaxsuffix, {
      method: "post",
      parameters: params,
      onSuccess: function (rslt) {
        if (rslt.ok) {
          uW.seed.queue_fort["city" + cityId].push([unitId, num, rslt.initTS, parseInt(rslt.initTS) + time, 0, time, rslt.fortifyId]);
          if (notify != null)
            setTimeout (function (){notify(null);}, 500);
        } else {
          if (notify != null)
            setTimeout (function (){notify(rslt.errorMsg);}, 500);
        }
      },
      onFailure: function () {
        if (notify != null)
          notify(rslt.errorMsg);
      },
  });
}


function doTrain (cityId, tut, gamble, unitId, num, notify){
  var time = uW.modal_barracks_traintime(unitId, num);
  var params = uW.Object.clone(uW.g_ajaxparams);
  params.cid = cityId;
  params.type = unitId;
  params.quant = num;
  params.items = tut;
  params.gambleId = gamble;

  new MyAjaxRequest(uW.g_ajaxpath + "ajax/train.php" + uW.g_ajaxsuffix, {
    method: "post",
    parameters: params,
    onSuccess: function(rslt) {
      if (rslt.ok) {
        for (var i = 1; i < 5; i++) {
		  var resourceLost = parseInt(uW.unitcost["unt" + unitId][i]) * 3600 * parseInt(num);
		  if(rslt.gamble) resourceLost = resourceLost*rslt.gamble[i];
          uW.seed.resources["city" + cityId]["rec" + i][0] = parseInt(uW.seed.resources["city" + cityId]["rec" + i][0]) - resourceLost;
        }
        uW.seed.citystats["city" + cityId].gold[0] = parseInt(uW.seed.citystats["city" + cityId].gold[0]) - parseInt(uW.unitcost["unt" + unitId][5]) * parseInt(num);
        uW.seed.citystats["city" + cityId].pop[0] = parseInt(uW.seed.citystats["city" + cityId].pop[0]) - parseInt(uW.unitcost["unt" + unitId][6]) * parseInt(num);
        uW.seed.queue_unt["city" + cityId].push([unitId, num, rslt.initTS, parseInt(rslt.initTS) + time, 0, time, null]);
        if (notify != null)
          setTimeout (function (){notify(null);}, 500);
      } else {
        if (notify != null){
          setTimeout (function (){notify(rslt.errorMsg);}, 500);
        }
      }
    },
    onFailure: function(o) {
      if (notify != null)
        notify(rslt.errorMsg);
    }
  });
}



/************  LIB classes/functions .... **************/
function getAbsoluteOffsets (e){
  ret = {left:0, top:0};
  while (e.offsetParent){
    if (e.style.position == 'absolute')
      break;
    ret.left += e.offsetLeft;
    ret.top += e.offsetTop;
    e = e.offsetParent;
  }      
  return ret;  
}

DebugTimer = {
  startTime : 0,
  start : function (){
    now = new Date();
    DebugTimer.startTime = now.getTime();
  },
  display : function (label, noReset){
    now = new Date();
    elapsed = now.getTime() - DebugTimer.startTime;
    logit (label +": "+ elapsed/1000);
    if (noReset===null || !noReset)
      DebugTimer.startTime = now.getTime();
  },
};

function debugPos  (e){
  return 'client - offset: '+ e.clientLeft +','+ e.clientTop +','+ e.clientWidth +','+ e.clientHeight
          +' - '+ e.offsetLeft +','+ e.offsetTop +','+ e.offsetWidth +','+ e.offsetHeight +' '+ e +' --OP--> '+ e.offsetParent;
}

function debugElement  (e){
  var x = uW.Object.clone (e.wrappedJSObject);
  x.innerHTML = '';
  x.innerText = '';
  x.textContent = '';
  return inspect (x, 1, 1);
}     

function searchDOM (node, condition, maxLevel, doMult){
  var found = [];
  eval ('var compFunc = function (node) { return ('+ condition +') }');
  doOne(node, 1);
  if(!doMult){
    if (found.length==0)
      return null;
    return found[0];
  }
  return found;
  function doOne (node, curLevel){
    try {
      if (compFunc(node))
        found.push(node);
    } catch (e){
    }      
    if (!doMult && found.length>0)
      return; 
    if (++curLevel<maxLevel && node.childNodes!=undefined)
      for (var c=0; c<node.childNodes.length; c++)
        doOne (node.childNodes[c], curLevel);
  }
}

function getClientCoords(e){
  if (e==null)
    return {x:null, y:null, width:null, height:null};
  var x=0, y=0;
  ret = {x:0, y:0, width:e.clientWidth, height:e.clientHeight};
  while (e.offsetParent != null){
    ret.x += e.offsetLeft;
    ret.y += e.offsetTop;
    e = e.offsetParent;
  }
  return ret;
}


function htmlTitleLine (msg){
  return '<TABLE width=100% cellspacing=0><TR><TD style="padding:0px" width=50%><HR></td><TD style="padding:0px">[ '+ msg +' ]</td><TD style="padding:0px" width=50%><HR></td></tr></table>';  
}


var WinManager = {
  wins : {},    // prefix : CPopup obj

  get : function (prefix){
    var t = WinManager;
    return t.wins[prefix];
  },
  
  add : function (prefix, pop){
    var t = WinManager;
    t.wins[prefix] = pop;
    if (uW.cpopupWins == null)
      uW.cpopupWins = {};
    uW.cpopupWins[prefix] = pop;
  },
  
  delete : function (prefix){
    var t = WinManager;
    delete t.wins[prefix];
    delete uW.cpopupWins[prefix];
  }    
}


// creates a 'popup' div
// prefix must be a unique (short) name for the popup window
function CPopup (prefix, x, y, width, height, enableDrag, onClose) {
  var pop = WinManager.get(prefix);
  if (pop){
    pop.show (false);
    return pop;
  }
  this.BASE_ZINDEX = 111111;
    
  // protos ...
  this.show = show;
  this.toggleHide = toggleHide;
  this.getTopDiv = getTopDiv;
  this.getMainDiv = getMainDiv;
  this.getLayer = getLayer;
  this.setLayer = setLayer;
  this.setEnableDrag = setEnableDrag;
  this.getLocation = getLocation;
  this.setLocation = setLocation;
  this.focusMe = focusMe;
  this.unfocusMe = unfocusMe;
  this.centerMe = centerMe;
  this.destroy = destroy;

  // object vars ...
  this.div = document.createElement('div');
  this.prefix = prefix;
  this.onClose = onClose;
  
  var t = this;
  this.div.className = 'CPopup '+ prefix +'_CPopup';
  this.div.id = prefix +'_outer';
  this.div.style.background = "#fff";
  this.div.style.zIndex = this.BASE_ZINDEX        // KOC modal is 100210 ?
  this.div.style.display = 'none';
  this.div.style.width = width + 'px';
  this.div.style.height = height + 'px';
  this.div.style.position = "absolute";
  this.div.style.top = y +'px';
  this.div.style.left = x + 'px';
  
  if (CPopUpTopClass==null)
    topClass = 'CPopupTop '+ prefix +'_CPopupTop';
  else
    topClass = CPopUpTopClass +' '+ prefix +'_'+ CPopUpTopClass;
    
  var m = '<TABLE cellspacing=0 width=100% height=100%><TR id="'+ prefix +'_bar" class="'+ topClass +'"><TD width=99% valign=bottom><SPAN id="'+ prefix +'_top"></span></td>\
      <TD id='+ prefix +'_X align=right valign=middle onmouseover="this.style.cursor=\'pointer\'" style="color:#fff; background:#333; font-weight:bold; font-size:14px; padding:0px 5px; -moz-border-radius-topright: 20px;">x</td></tr>\
      <TR><TD height=100% valign=top class="CPopMain '+ prefix +'_CPopMain" colspan=2 id="'+ prefix +'_main"></td></tr></table>';
  document.body.appendChild(this.div);
  this.div.innerHTML = m;
  document.getElementById(prefix+'_X').addEventListener ('click', e_XClose, false);
  this.dragger = new CWinDrag (document.getElementById(prefix+'_bar'), this.div, enableDrag);
  
  this.div.addEventListener ('mousedown', e_divClicked, false);
  WinManager.add(prefix, this);
  
  function e_divClicked (){
    t.focusMe();
  }  
  function e_XClose (){
    t.show(false);
    if (t.onClose != null)
      t.onClose();
  }

  function focusMe (){
    t.setLayer(5);
    for (k in uW.cpopupWins){
      if (k != t.prefix)
        uW.cpopupWins[k].unfocusMe(); 
    }
  }
  function unfocusMe (){
    t.setLayer(-5);
  }
  function getLocation (){
    return {x: parseInt(this.div.style.left), y: parseInt(this.div.style.top)};
  }
  function setLocation (loc){
    t.div.style.left = loc.x +'px';
    t.div.style.top = loc.y +'px';
  }
  function destroy (){
    document.body.removeChild(t.div);
    WinManager.delete (t.prefix);
  }
  function centerMe (parent){
    if (parent == null){
      var coords = getClientCoords(document.body);
    } else
      var coords = getClientCoords(parent);
    var x = ((coords.width - parseInt(t.div.style.width)) / 2) + coords.x;
    var y = ((coords.height - parseInt(t.div.style.height)) / 2) + coords.y;
    if (x<0)
      x = 0;
    if (y<0)
      y = 0;
    t.div.style.left = x +'px';
    t.div.style.top = y +'px';
  }
  function setEnableDrag (tf){
    t.dragger.setEnable(tf);
  }
  function setLayer(zi){
    t.div.style.zIndex = ''+ (this.BASE_ZINDEX + zi);
  }
  function getLayer(){
    return parseInt(t.div.style.zIndex) - this.BASE_ZINDEX;
  }
  function getTopDiv(){
    return document.getElementById(this.prefix+'_top');
  }
  function getMainDiv(){
    return document.getElementById(this.prefix+'_main');
  }
  function show(tf){
    if (tf){
      t.div.style.display = 'block';
      t.focusMe ();
    } else {
      t.div.style.display = 'none';
    }
    return tf;
  }
  function toggleHide(t){
    if (t.div.style.display == 'block') {
      return t.show (false);
    } else {
      return t.show (true);
    }
  }
}

function CWinDrag (clickableElement, movingDiv, enabled) {
  var t=this;
  this.setEnable = setEnable;
  this.setBoundRect = setBoundRect;
  this.debug = debug;
  this.dispEvent = dispEvent;
  this.lastX = null;
  this.lastY = null;
  this.enabled = true;
  this.moving = false;
  this.theDiv = movingDiv;
  this.body = document.body;
  this.ce = clickableElement;
  this.moveHandler = new CeventMove(this).handler;
  this.outHandler = new CeventOut(this).handler;
  this.upHandler = new CeventUp(this).handler;
  this.downHandler = new CeventDown(this).handler;
  this.clickableRect = null;
  this.boundRect = null;
  this.bounds = null;
  this.enabled = false;
  if (enabled == null)
    enabled = true;
  this.setEnable (enabled);

  function setBoundRect (b){    // this rect (client coords) will not go outside of current body
    this.boundRect = boundRect;
    this.bounds = null;
  }

  function setEnable (enable){
    if (enable == t.enabled)
      return;
    if (enable){
      clickableElement.addEventListener('mousedown',  t.downHandler, false);
      t.body.addEventListener('mouseup', t.upHandler, false);
    } else {
      clickableElement.removeEventListener('mousedown', t.downHandler, false);
      t.body.removeEventListener('mouseup', t.upHandler, false);
    }
    t.enabled = enable;
  }

  function CeventDown (that){
    this.handler = handler;
    var t = that;
    function handler (me){
if (DEBUG_TRACE_DRAG) t.dispEvent ('eventDOWN', me);
      if (t.bounds == null){
        t.clickableRect = getClientCoords(clickableElement);
        t.bodyRect = getClientCoords(document.body);
        if (t.boundRect == null)
          t.boundRect = t.clickableRect;
if (DEBUG_TRACE_DRAG) logit ('Clickable rect: '+ inspect (t.clickableRect, 3, 1));
if (DEBUG_TRACE_DRAG) logit ('Body rect: '+ inspect (t.bodyRect, 3, 1));
if (DEBUG_TRACE_DRAG) logit ('Bound rect: '+ inspect (t.boundRect, 3, 1));
        t.bounds = {top:10-t.clickableRect.height, bot:t.bodyRect.height-25, left:40-t.clickableRect.width, right:t.bodyRect.width-25};
if (DEBUG_TRACE_DRAG) logit ("BOUNDS: "+ inspect (t.bounds, 8, 10));
      }
      if (me.button==0 && t.enabled){
        t.body.addEventListener('mousemove', t.moveHandler, true);
        t.body.addEventListener('mouseout', t.outHandler, true);
        t.lastX = me.clientX;
        t.lastY = me.clientY;
        t.moving = true;
      }
    }
  }

  function CeventUp  (that){
    this.handler = handler;
    var t = that;
    function handler (me){
if (DEBUG_TRACE_DRAG) t.dispEvent ('eventUP', me);
      if (me.button==0 && t.moving)
        _doneMoving(t);
    }
  }

  function _doneMoving (t){
if (DEBUG_TRACE_DRAG) logit ('doneMoving');
    t.body.removeEventListener('mousemove', t.moveHandler, true);
    t.body.removeEventListener('mouseout', t.outHandler, true);
    t.moving = false;
  }

  function CeventOut  (that){
    this.handler = handler;
    var t = that;
    function handler (me){
//t.dispEvent ('eventOUT', me);
      if (me.button==0){
        t.moveHandler (me);
      }
    }
  }

  function CeventMove (that){
    this.handler = handler;
    var t = that;
    function handler (me){
      if (t.enabled && !t.wentOut){
//t.dispEvent ('eventMOVE', me);
        var newTop = parseInt(t.theDiv.style.top) + me.clientY - t.lastY;
        var newLeft = parseInt(t.theDiv.style.left) + me.clientX - t.lastX;
        if (newTop < t.bounds.top){     // if out-of-bounds...
          newTop = t.bounds.top;
          _doneMoving(t);
        } else if (newLeft < t.bounds.left){
          newLeft = t.bounds.left;
          _doneMoving(t);
        } else if (newLeft > t.bounds.right){
          newLeft = t.bounds.right;
          _doneMoving(t);
        } else if (newTop > t.bounds.bot){
          newTop = t.bounds.bot;
          _doneMoving(t);
        }
        t.theDiv.style.top = newTop + 'px';
        t.theDiv.style.left = newLeft + 'px';
        t.lastX = me.clientX;
        t.lastY = me.clientY;
      }
    }
  }

  function debug  (msg, e){
    logit ("*************** "+ msg +" ****************");
    logit ('clientWidth, Height: '+ e.clientWidth +','+ e.clientHeight);
    logit ('offsetLeft, Top, Width, Height (parent): '+ e.offsetLeft +','+ e.offsetTop +','+ e.offsetWidth +','+ e.offsetHeight +' ('+ e.offsetParent +')');
    logit ('scrollLeft, Top, Width, Height: '+ e.scrollLeft +','+ e.scrollTop +','+ e.scrollWidth +','+ e.scrollHeight);
  }

  function dispEvent (msg, me){
    logit (msg + ' Button:'+ me.button +' Screen:'+ me.screenX +','+ me.screenY +' client:'+  me.clientX +','+ me.clientY +' rTarget: '+ me.relatedTarget);
  }
}

function inspect(obj, maxLevels, level, doFunctions){
  var str = '', type, msg;
  if(level == null)  level = 0;
  if(maxLevels == null) maxLevels = 1;
  if(maxLevels < 1)
      return 'Inspect Error: Levels number must be > 0';
  if(obj == null)
    return 'ERROR: Object is NULL\n';
  var indent = '';
  for (var i=0; i<level; i++)
    indent += '  ';
  for(property in obj) {
    try {
        type =  matTypeof(obj[property]);
        if (doFunctions==true && (type == 'function')){
          str += indent + '(' + type + ') ' + property + "[FUNCTION]\n";
        } else if (type != 'function') {
          str += indent + '(' + type + ') ' + property + ( (obj[property]==null)?(': null'):('')) +' = '+ obj[property] +"\n";
        }
        if((type=='object' || type=='array') && (obj[property] != null) && (level+1 < maxLevels))
          str += inspect(obj[property], maxLevels, level+1, doFunctions);  // recurse
    }
    catch(err) {
      // Is there some properties in obj we can't access? Print it red.
      if(typeof(err) == 'string') msg = err;
      else if(err.message)        msg = err.message;
      else if(err.description)    msg = err.description;
      else                        msg = 'Unknown';
      str += '(Error) ' + property + ': ' + msg +"\n";
    }
  }
  str += "\n";
  return str;
}

Array.prototype.compare = function(testArr) {
    if (this.length != testArr.length) return false;
    for (var i = 0; i < testArr.length; i++) {
        if (this[i].compare) { 
            if (!this[i].compare(testArr[i])) return false;
        }
        if (this[i] !== testArr[i]) return false;
    }
    return true;
}
String.prototype.entityTrans = { '&':'&amp;', '<':'&lt;',  '>':'&gt;',  '\"':'&quot;', '\'':'&#039', '<':'\\u003c', '/':'\\/', '\\':'\\\\', '\"':'\\\"','{':'&#123;','}':'&#125;'};
String.prototype.htmlEntities = function() {
  var ret = this.toString();
  for (k in this.entityTrans)
     ret  = ret.split(k).join(this.entityTrans[k]);
  return ret;
}
String.prototype.htmlSpecialCharsDecode = function() {
  var ret = this.toString();
  for (k in this.entityTrans)
     ret = ret.split(this.entityTrans[k]).join(k);
  return ret;
}

String.prototype.stripTags = function(){ 
  return this.replace(/<\w+(\s+("[^"]*"|'[^']*'|[^>])+)?>|<\/\w+>/gi, '');
}

String.prototype.capitalize = function(){ 
  return this.charAt(0).toUpperCase() + this.substring(1).toLowerCase();
}

function objectName (o){
  var s = o.toString();
  return s.substr(7,s.length-8);
}

function matTypeof (v){
  if (v == undefined)
    return 'undefined';
  if (typeof (v) == 'object'){
    if (!v)
      return 'null';
    else if (v.constructor.toString().indexOf("Array")>=0 && typeof(v.splice)=='function')
      return 'array';
    else return 'object';
  }
  return typeof (v);
}

function addCommasInt(n){
  nStr = parseInt(n) + '';
  var rgx = /(\d+)(\d{3})/;
  while (rgx.test(nStr)) {
    nStr = nStr.replace(rgx, '$1' + ',' + '$2');
  }
  return nStr;
}

function addCommas(nStr){
  nStr += '';
  x = nStr.split('.');
  x1 = x[0];
  x2 = x.length > 1 ? '.' + x[1] : '';
  var rgx = /(\d+)(\d{3})/;
  while (rgx.test(x1)) {
    x1 = x1.replace(rgx, '$1' + ',' + '$2');
  }
  return x1 + x2;
}


function addCommasWhole(nStr){
  nStr += '';
  x = nStr.split('.');
  x1 = x[0];
  x2 = x.length > 1 ? '.' + x[1] : '';
  var rgx = /(\d+)(\d{3})/;
  while (rgx.test(x1)) {
    x1 = x1.replace(rgx, '$1' + ',' + '$2');
  }
  return x1;
}


function htmlSelector (valNameObj, curVal, tags){
  m = [];
  m.push ('<SELECT');
  if (tags){
    m.push (' ');
    m.push (tags);
  }  
  for (k in valNameObj){
    m.push ('><OPTION ');
    if (k == curVal)
      m.push ('SELECTED ');
    m.push ('value="');
    m.push (k);
    m.push ('">');
    m.push (valNameObj[k]);
    m.push ('</option>');
  }
  m.push ('</select>');
  return m.join ('');

}

function toUnicode(theString) {
  var unicodeString = '';
  for (var i=0; i < theString.length; i++) {
    var theUnicode = theString.charCodeAt(i);
    theUnicode = '&#' + theUnicode +';';
    unicodeString += theUnicode;
  }
  return unicodeString;
}

function unixTime (){
  return parseInt (new Date().getTime() / 1000) + uW.g_timeoff;
}
function htmlOptions (a, curVal){
  m = '';
  for (k in a)
    m += '<OPTION value="'+ k +'"'+ (k==curVal?' SELECTED':'')  +'>'+ a[k] +'</option>';
  return m;
}
function getFunctionName (func){
  var name=/\W*function\s+([\w\$]+)\(/.exec(func);
  if (!name)
    return '';
  return name[1];
}

function findAllBetween (txt, find1, find2){
  var m = [];
  var last = 0;
  while ( (i1=txt.indexOf(find1, last))>=0 && (i2=txt.indexOf (find2, i1))>=0 ) {
    m.push (txt.substring(i1+find1.length, i2));
    last = i2 + find2.length;
  }
  return m;
}

function strUpTo (s, find){
  var i = s.indexOf(find);
  if (i > 0)
    return s.substr(0, i);
  return s;
}


/********
 Xd Xh
 Xh Xm
 Xm Xs
 Xs
********/
function timestrShort(time) {
  time = parseInt (time);
  if (time > 86400){
    var m = [];
    time /= 3600;
    m.push (parseInt(time/24)); 
    m.push ('d ');
    m.push (parseInt(time%24)); 
    m.push ('h ');
    return m.join ('');    
  } else
    return timestr (time);
}

/**********************
 part       full
 Xd Xh Xm   Xd Xh Xm Xs
 Xh Xm      Xh Xm Xs
 Xm Xs      Xm Xs
 Xs         Xs
**********************/
function timestr(time, full) {
  time = parseInt (time);
  var m = [];
  var t = time;
  if (t < 61)
    return  t + 's';
  if (t > 86400){
    m.push (parseInt(t/86400)); 
    m.push ('d ');
    t %= 86400;
  }  
  if (t>3600 || time>3600){
    m.push (parseInt(t/3600)); 
    m.push ('h ');
    t %= 3600;
  }  
  m.push (parseInt(t/60)); 
  m.push ('m');
  if (full || time<=3600 ){
    m.push (' ');
    m.push (t%60);
    m.push ('s');  
  }
  return m.join ('');
}

/************  LIB singletons .... **************/
// TODO: fix REopening window
var WINLOG_MAX_ENTRIES = 1000;     // TODO
var WinLog = {
  state : null,
  win: null,
  eOut : null,
  lastE : null,
  enabled : true,
  reverse : true,
  busy : false,
isOpening : false,

  open : function (){
    var t = WinLog;

    function eventButClear(){
      var t = WinLog;
      t.lastE = null;
      t.eOut.innerHTML ='';
    }
    function eventButReverse(){
      var t = WinLog;
      if (t.busy)
        return;
      t.busy = true;
      if (t.reverse){
        t.win.document.getElementById('wlRev').value= 'Top';
        t.reverse = false;
      } else{
        t.win.document.getElementById('wlRev').value= 'Bottom';
        t.reverse = true;
      }
      var n = t.eOut.childNodes.length;
      if (n < 2)
        return;
      for (i=n-2; i>=0; i--){
        t.eOut.appendChild (t.eOut.childNodes[i]);
      }
      t.busy = false;
    }
    
    if (!t.win || t.win.closed){
t.isOpening = true;  
// Firefox bug??? It appears as if a new thread is started on open, withOUT reusing same window
      //t.win = window.open('', 'uwtrace', 'top=30,left=0,width=900,height=700,scrollbars=no,location=no,menubar=no,directories=no,status=no');
	  t.win = new CPopup('ptwinlog', 0, 0, 500, 800, true, function(){t.win.destroy(); t.win=null; t.win.closed=true;});
	  t.win.show(true);
t.isOpening = false; 
t.state = null; 
    }
    
    if (t.state == null){
      t.win.getMainDiv().innerHTML = '<STYLE>pre{margin:0px} hr{margin:3px; height:1px; border:0px; color:#cee; background-color:#cee}</style>\
        <BODY style="margin:0px; padding:0px; border:none">\
        <DIV id=winlogtop style="background-color:#d0d0d0; margin:0px; padding:0px; border:1px solid">\
        <INPUT id=wlClear type=submit value="Clear"> &nbsp; <INPUT id=wlRev type=submit value="Bottom"></div>\
        <DIV id=wlOut style="overflow-y:auto; overflow-x:auto; height:750px; max-height:800px; width:600px"></div></body>';
      document.getElementById('wlClear').addEventListener('click', eventButClear, false);
      document.getElementById('wlRev').addEventListener('click', eventButReverse, false);
      t.eOut =  document.getElementById('wlOut');
      t.lastE = null;
      t.state = 1;
    }
  },

  writeText : function (msg){
    WinLog.write (msg.htmlEntities()); 
  },
  
  write : function (msg){
    var t = WinLog;
    if (!t.enabled || t.isOpening)
      return;
    t.open();
    var te = document.createElement('pre');
    var now = new Date();
    var m = [];
    var millis = now.getMilliseconds();
    m.push (now.toTimeString().substring (0,8));
    m.push ('.');
    if (millis<100)
      m.push('0');
    if (millis<10)
      m.push('0');
    m.push(millis);
    m.push (': ');
    m.push (msg);
    te.innerHTML = m.join('');

    if (t.reverse){
      if (t.lastE == null){
        t.eOut.appendChild(te);
        t.lastE = te;
      } else {
        t.eOut.insertBefore(te, t.lastE);
      }
      var hr = document.createElement('hr');
      t.eOut.insertBefore(hr, te);
      t.lastE = hr;
    } else {
      t.eOut.appendChild(te);
      t.eOut.appendChild(document.createElement('hr'));
    }
  },
};

/***** tower tab edits *****/
Tabs.Tower = {
  tabOrder : 41,
  cont : null,
  fixAvailable : {},
  tabDisabled : !ENABLE_ALERT_TO_CHAT,
  Providers : {
		0: { 'country': "--Country--", 'provider': "--Provider--" },
        1: { 'country': "AUSTRALIA", 'provider': "T-Mobile" },
        2: { 'country': "AUSTRALIA", 'provider': "Optus Zoo" },
        3: { 'country': "AUSTRIA", 'provider': "T-Mobile" },
        4: { 'country': "BULGARIA", 'provider': "Mtel" },
        5: { 'country': "BULGARIA", 'provider': "Globul" },
        6: { 'country': "CANADA", 'provider': "Aliant" },
        7: { 'country': "CANADA", 'provider': "Bell Mobility" },
        8: { 'country': "CANADA", 'provider': "Fido" },
        9: { 'country': "CANADA", 'provider': "MTS Mobility" },
        10: { 'country': "CANADA", 'provider': "Rogers Wireless" },
        11: { 'country': "CANADA", 'provider': "Sasktel Mobility" },
        12: { 'country': "CANADA", 'provider': "Telus" },
        13: { 'country': "CANADA", 'provider': "Virgin Mobile" },
        14: { 'country': "CANADA", 'provider': "Presidents Choice" },
        15: { 'country': "GERMANY", 'provider': "T-Mobile" },
        16: { 'country': "GERMANY", 'provider': "Vodafone" },
        17: { 'country': "GERMANY", 'provider': "O2" },
        18: { 'country': "GERMANY", 'provider': "E-Plus" },
        19: { 'country': "ICELAND", 'provider': "OgVodafone" },
        20: { 'country': "ICELAND", 'provider': "Siminn" },
        21: { 'country': "INDIA", 'provider': "Andhra Pradesh AirTel" },
        22: { 'country': "INDIA", 'provider': "Andhra Pradesh Idea Cellular" },
        23: { 'country': "INDIA", 'provider': "Chennal Skycell Airtel" },
        24: { 'country': "INDIA", 'provider': "Chennel RPG Cellular" },
        25: { 'country': "INDIA", 'provider': "Delhi Airtel" },
        26: { 'country': "INDIA", 'provider': "Delhi Hutch" },
        27: { 'country': "INDIA", 'provider': "Gujarat Idea Cellular" },
        28: { 'country': "INDIA", 'provider': "Gujaret Airtel" },
        29: { 'country': "INDIA", 'provider': "Gujaret Celforce" },
        30: { 'country': "INDIA", 'provider': "Goa Airtel" },
        31: { 'country': "INDIA", 'provider': "Goa BPL Mobile" },
        32: { 'country': "INDIA", 'provider': "Goa Idea Cellular" },
        33: { 'country': "INDIA", 'provider': "Haryana Airtel" },
        34: { 'country': "INDIA", 'provider': "Haryana Escotel" },
        35: { 'country': "INDIA", 'provider': "Himachal Pradesh Airtel" },
        36: { 'country': "INDIA", 'provider': "Karnataka Airtel" },
        37: { 'country': "INDIA", 'provider': "Kerala Airtel" },
        38: { 'country': "INDIA", 'provider': "Kerala Escotel" },
        39: { 'country': "INDIA", 'provider': "Kerala BPL Mobile" },
        40: { 'country': "INDIA", 'provider': "Kolkata Airtel" },
        41: { 'country': "INDIA", 'provider': "Madhya Pradesh Airtel" },
        42: { 'country': "INDIA", 'provider': "Maharashtra Airtel" },
        43: { 'country': "INDIA", 'provider': "Maharashtra BPL Mobile" },
        44: { 'country': "INDIA", 'provider': "Maharashtra Idea Cellular" },
        45: { 'country': "INDIA", 'provider': "Mumbai Airtel" },
        46: { 'country': "INDIA", 'provider': "Mumbai BPL Mobile" },
        47: { 'country': "INDIA", 'provider': "Punjab Airtel" },
        48: { 'country': "INDIA", 'provider': "Pondicherry BPL Mobile" },
        49: { 'country': "INDIA", 'provider': "Tamil Nadu Airtel" },
        50: { 'country': "INDIA", 'provider': "Tamil Nadu BPL Mobile" },
        51: { 'country': "INDIA", 'provider': "Tamil Nadu Aircel" },
        52: { 'country': "INDIA", 'provider': "Uttar Pradesh West Escotel" },
        53: { 'country': "IRELAND", 'provider': "Meteor" },
        54: { 'country': "IRELAND", 'provider': "Meteor MMS" },
        55: { 'country': "ITALY", 'provider': "TIM" },
        56: { 'country': "ITALY", 'provider': "Vodafone" },
        57: { 'country': "JAPAN", 'provider': "AU by KDDI" },
        58: { 'country': "JAPAN", 'provider': "NTT DoCoMo" },
        59: { 'country': "JAPAN", 'provider': "Vodafone Chuugoku/Western" },
        60: { 'country': "JAPAN", 'provider': "Vodafone Hokkaido" },
        61: { 'country': "JAPAN", 'provider': "Vodafone Hokuriko/Central North" },
        62: { 'country': "JAPAN", 'provider': "Vodafone Kansai/West, including Osaka" },
        63: { 'country': "JAPAN", 'provider': "Vodafone Kanto/Koushin/East including Tokyo" },
        64: { 'country': "JAPAN", 'provider': "Vodafone Kyuushu/Okinawa" },
        65: { 'country': "JAPAN", 'provider': "Vodafone Shikoku" },
        66: { 'country': "JAPAN", 'provider': "Vodafone Touhoku/Niigata/North" },
        67: { 'country': "JAPAN", 'provider': "Vodafone Toukai/Central" },
        68: { 'country': "JAPAN", 'provider': "Willcom" },
        69: { 'country': "JAPAN", 'provider': "Willcom di" },
        70: { 'country': "JAPAN", 'provider': "Willcom dj" },
        71: { 'country': "JAPAN", 'provider': "Willcom dk" },
        72: { 'country': "NETHERLANDS", 'provider': "T-Mobile" },
        73: { 'country': "NETHERLANDS", 'provider': "Orange" },
        74: { 'country': "SINGAPORE", 'provider': "M1" },
        75: { 'country': "SOUTH AFRICA", 'provider': "Vodacom" },
        76: { 'country': "SPAIN", 'provider': "Telefonica Movistar" },
        77: { 'country': "SPAIN", 'provider': "Vodafone" },
        78: { 'country': "SWEDEN", 'provider': "Tele2" },
        79: { 'country': "UNITED STATES", 'provider': "Teleflip" },
        80: { 'country': "UNITED STATES", 'provider': "Alltel" },
        81: { 'country': "UNITED STATES", 'provider': "Ameritech" },
        82: { 'country': "UNITED STATES", 'provider': "ATT Wireless" },
        83: { 'country': "UNITED STATES", 'provider': "Bellsouth" },
        84: { 'country': "UNITED STATES", 'provider': "Boost" },
        85: { 'country': "UNITED STATES", 'provider': "CellularOne" },
        86: { 'country': "UNITED STATES", 'provider': "CellularOne MMS" },
        87: { 'country': "UNITED STATES", 'provider': "Cingular" },
        88: { 'country': "UNITED STATES", 'provider': "Edge Wireless" },
        89: { 'country': "UNITED STATES", 'provider': "Sprint PCS" },
        90: { 'country': "UNITED STATES", 'provider': "T-Mobile" },
        91: { 'country': "UNITED STATES", 'provider': "Metro PCS" },
        92: { 'country': "UNITED STATES", 'provider': "Nextel" },
        93: { 'country': "UNITED STATES", 'provider': "O2" },
        94: { 'country': "UNITED STATES", 'provider': "Orange" },
        95: { 'country': "UNITED STATES", 'provider': "Qwest" },
        96: { 'country': "UNITED STATES", 'provider': "Rogers Wireless" },
        97: { 'country': "UNITED STATES", 'provider': "Telus Mobility" },
        98: { 'country': "UNITED STATES", 'provider': "US Cellular" },
        99: { 'country': "UNITED STATES", 'provider': "Verizon" },
        100: { 'country': "UNITED STATES", 'provider': "Virgin Mobile" },
        101: { 'country': "UNITED KINGDOM", 'provider': "O2 1" },
        102: { 'country': "UNITED KINGDOM", 'provider': "O2 2" },
        103: { 'country': "UNITED KINGDOM", 'provider': "Orange" },
        104: { 'country': "UNITED KINGDOM", 'provider': "T-Mobile" },
        105: { 'country': "UNITED KINGDOM", 'provider': "Virgin Mobile" },
        106: { 'country': "UNITED KINGDOM", 'provider': "Vodafone" },
        107: { 'country': "BELGIUM", 'provider': "mobistar" },
        108: { 'country': "GERMANY", 'provider': "1und1" },
        109: { 'country': "UNITED STATES", 'provider': "MyCricket" }
    },

  init : function (div){
    var t = Tabs.Tower;
    t.cont = div;
    
    try {      
      m = '<TABLE class=ptTab><TR><TD colspan=2><B>Alliance Report Scanner:</b></td></tr>';
	 m += '<TR><TD><INPUT id=togEnhanceAR type=checkbox /></td><TD>Enable post of Alliance Reports to Alliance Chat</td></tr>\
		   <TR><TD></td><TD><TABLE>\
			<TR><TD>Scan interval: <INPUT id=ptalertinterval type=text size=3 value='+Options.alertinterval+' /> seconds\
			<TR><TD><INPUT id=ptalerttext type=checkbox '+ (Options.celltext.enable?'CHECKED ':'') +'/> Send text on alert</td></tr>\
			<TR><TD colspan=2><table><tr><td align=left>Text message alert to: <INPUT id=ptnum1 type=text size=4 maxlength=4 value="'+ Options.celltext.num1 +'"  '+(Options.celltext.provider==0?'DISABLED':'')+'\> &nbsp;<INPUT id=ptnum2 type=text size=3 maxlength=3 value="'+ Options.celltext.num2 +'"  '+(Options.celltext.provider==0?'DISABLED':'')+'\> &nbsp;<INPUT id=ptnum3 type=text size=4 maxlength=4 value="'+ Options.celltext.num3 +'"  '+(Options.celltext.provider==0?'DISABLED':'')+'\></td></tr>\
			<TR><TD align=left>Country: <select id="ptfrmcountry">';
			for (var i in t.Providers) {
			   var ret=m.indexOf(t.Providers[i].country);
			   if (ret==-1) {
				 if (t.Providers[i].country==t.Providers[Options.celltext.provider].country) {
				   m += '<option value="'+t.Providers[i].country+'" selected="selected">'+t.Providers[i].country+'</option>'; // Load Previous Provider Selection
				 }
				 else {
				   m += '<option value="'+t.Providers[i].country+'">'+t.Providers[i].country+'</option>';
				 }
			   }
			}
			m += '</select>\
			<select id="ptfrmprovider" '+(Options.celltext.provider==0?'DISABLED':'')+'><option value=0 >--Provider--</option>';
			for (var i in t.Providers) {
				if(t.Providers[i].country == t.Providers[Options.celltext.provider].country)
					if(Options.celltext.provider == i)
						m += '<option value="'+i+'" selected="selected">'+t.Providers[i].provider+'</option>'; // Load Previous Provider Selection
					else
					   m += '<option value="'+i+'">'+t.Providers[i].provider+'</option>';
			}
			m += '</select></td></tr></table></td></tr></table></td></tr></table>';
		t.cont.innerHTML = m;
	  
		document.getElementById('ptalerttext').addEventListener ('change', function (e){Options.celltext.enable = e.target.checked;}, false);
		document.getElementById('ptfrmcountry').addEventListener ('change', t.setCountry, false);
		document.getElementById('ptfrmprovider').addEventListener ('change', t.setProvider, false);
		document.getElementById('ptnum1').addEventListener ('change', t.phonenum, false);
		document.getElementById('ptnum2').addEventListener ('change', t.phonenum, false);
		document.getElementById('ptnum3').addEventListener ('change', t.phonenum, false);
		document.getElementById('ptalertinterval').addEventListener ('change', function(e){Options.alertinterval = parseInt(e.target.value);}, false);
		t.togOpt ('togEnhanceAR', 'EnhanceAR', AllianceReportsCheck.enable);
      
    } catch (e) {
      t.cont.innerHTML = '<PRE>'+ e.name +' : '+ e.message +'</pre>';  
    }
  },

  phonenum : function() {
   Options.celltext.num1 = document.getElementById('ptnum1').value;
   Options.celltext.num2 = document.getElementById('ptnum2').value;
   Options.celltext.num3 = document.getElementById('ptnum3').value;
  },

  setCountry : function(){
    var t = Tabs.Tower;
    var myselect=document.getElementById("ptfrmprovider");
	myselect.innerHTML = '<option value=0 >--Provider--</option>';
	myselect.disabled = true;
    for (var i in t.Providers) {
     if (t.Providers[i].country == document.getElementById("ptfrmcountry").value){
		var addoption = document.createElement('option');
		addoption.value = i;
		addoption.text = t.Providers[i].provider;
      myselect.add(addoption, null) //add new option to end of "Providers"
     }
    }
	myselect.disabled = false;
   },

  setProvider : function(){
    var ddProvider = document.getElementById("ptfrmprovider").wrappedJSObject;
     Options.celltext.provider=ddProvider.options[ddProvider.selectedIndex].value;
	if(ddProvider.selectedIndex > 0){
		document.getElementById("ptnum1").disabled = false;
		document.getElementById("ptnum2").disabled = false;
		document.getElementById("ptnum3").disabled = false;
	} else {
		document.getElementById("ptnum1").disabled = true;
		document.getElementById("ptnum2").disabled = true;
		document.getElementById("ptnum3").disabled = true;
	}
    //alert(Options.celltext.provider);
   },
  
  hide : function (){
  },

  show : function (){
  },
  
  togOpt : function (checkboxId, optionName, callEnable, callIsAvailable){
    var t = Tabs.Tower;
    var checkbox = document.getElementById(checkboxId);
    
    if (callIsAvailable && callIsAvailable()==false){
      checkbox.disabled = true;
      return;
    }
    if (Options[optionName])
      checkbox.checked = true;
    checkbox.addEventListener ('change', new eventToggle(checkboxId, optionName, callEnable).handler, false);
    function eventToggle (checkboxId, optionName, callOnChange){
      this.handler = handler;
      var optName = optionName;
      var callback = callOnChange;
      function handler(event){
        Options[optionName] = this.checked;
        saveOptions();
        if (callback != null)
          callback (this.checked);
      }
    }
  },
}

var AllianceReportsCheck = {
  aRpt:{},
	
  init : function (){
    var t = AllianceReportsCheck;
	var b = GM_getValue ('allianceRpt_'+GetServerId());
    if(b!=null)
		t.aRpt = JSON2.parse (b);  
	else{
		t.aRpt = {};
	}
    t.enable (Options.EnhanceAR);
  },


  enable : function (tf){
    var t = AllianceReportsCheck;
	if (Options.EnhanceAR)
			t.checkAllianceReport();
    setTimeout(function(){ 
		t.enable(Options.EnhaceAR);
	}, parseInt((Math.random()*15*1000)+(Options.alertinterval*1000)));
  },
  
  checkAllianceReport : function (){
  var t = AllianceReportsCheck;
  var params = unsafeWindow.Object.clone(unsafeWindow.g_ajaxparams);
    params.group = "a";
    new MyAjaxRequest(unsafeWindow.g_ajaxpath + "ajax/listReports.php" + unsafeWindow.g_ajaxsuffix, {
      method: "post",
      parameters: params,
      onSuccess: function (rslt) {
        t.parseAReports (rslt.arReports, rslt.arPlayerNames, rslt.arAllianceNames, rslt.arCityNames, rslt.totalPages);
      },
      onFailure: function (rslt) {
      },
    }, false);
  },

   parseAReports : function (ar, playerNames, allianceNames, cityNames, totalPages){
    var t = AllianceReportsCheck;
	var myAllianceId = getMyAlliance()[0];
	var rptkeys = unsafeWindow.Object.keys(ar);
      if (matTypeof(ar) != 'array'){
	  for (var i = 0; i < rptkeys.length; i++) {
          var rpt = ar[rptkeys[i]];
          rpt.side0AllianceId = parseInt(rpt.side0AllianceId);
          var targetDiplomacy = getDiplomacy (rpt.side0AllianceId);
          if (rpt.side1AllianceId != myAllianceId){
	var ID = rpt.reportId;
	   if(t.aRpt["a"+ID] != null)
		return;
			  if (rpt.marchType == 3)
				atkType = 'scouted';
			  else if (rpt.marchType == 4)
				atkType = 'attacked';
			  if (rpt.side0TileType > 50)
				target = "city";
			  else if (rpt.side0TileType <= 50)
				target = "wild";
			  if(rpt.side1AllianceId == 0)
				var allianceName = 'Undefined';
			  else
				var allianceName = allianceNames["a"+rpt.side1AllianceId];
	  var date=unsafeWindow.formatDateByUnixTime(rpt.reportUnixTime);
	   var msg = 'Report No: '+rpt.reportId+' '+date+' : '+playerNames['p'+rpt.side0PlayerId]+'\'s '+target+' at '+rpt.side0XCoord+','+rpt.side0YCoord+' has been '+atkType+' by '+playerNames["p"+rpt.side1PlayerId]+' at '+rpt.side1XCoord+','+rpt.side1YCoord+' of '+allianceName+'('+getDiplomacy(rpt.side1AllianceId)+')';
 var automsg = sendChat('/a '+msg);
 if(Options.celltext.enable)
 t.postToCell(rpt, playerNames, cityNames);
	if(Options.alertConfig.sound)
		AudioAlert.sound(true);
	t.addAllianceReport(rpt);
		logit(msg);
          }
		 }
		}	  
 },
  
  addAllianceReport : function (rpt){
  t = AllianceReportsCheck;
  var ID = rpt.reportId;
  t.aRpt["a"+ID] = rpt.reportUnixTime;
  var now = unixTime() - (5*24*60*60);
  for(k in t.aRpt){
	if(t.aRpt[k] < now)
		delete t.aRpt[k];
  }
  var string = JSON2.stringify(t.aRpt);
  //t.towerMarches['m'+m.mid]
    setTimeout(function() {
  GM_setValue("allianceRpt_"+GetServerId(), string);
  }, 0);

},

postToCell : function (m, playerNames, cityNames){
    var t = AllianceReportsCheck;
    var data = [];
    if (m.marchType == 3){
      data.atkType = 'scout';
    } else if (m.marchType == 4){
      data.atkType = 'atk';
    } else {
      return;
    }

    if (m.side0TileType > 50)
      data.target = 'city ('+ m.side0XCoord +','+ m.side0YCoord+')';
    else {
      data.target = 'wild ('+ m.side0XCoord +','+ m.side0YCoord+')';
    }
	
      data.who = playerNames["p"+m.side1PlayerId]+' ('+m.side1XCoord+','+m.side1YCoord+')';

     //data.arrival = unsafeWindow.timestr(parseInt(m.reportUnixTime - unixTime()));
     data.arrival = unsafeWindow.formatDateByUnixTime(m.reportUnixTime);

    data.totTroops = ' ';

    data.provider = Options.celltext.provider;
    data.num1 = Options.celltext.num1;
    data.num2 = Options.celltext.num2;
    data.num3 = Options.celltext.num3;
    data.serverId = GetServerId();
    data.player = playerNames['p'+m.side0PlayerId];
    data.city = cityNames['c'+m.side0CityId];

  GM_xmlhttpRequest({
    method: 'POST',
    url: 'http://hs151.digitalweb.net/index.php',
	headers: {
		'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
    },
	data: implodeUrlArgs(data),

	})
  },
}

function reloadKOC (){
  var serverId = GetServerId();
  if(serverId == '??') window.location.reload(true);
  var goto = 'https://apps.facebook.com/kingdomsofcamelot/?s='+serverId;
  var t = '<FORM target="_top" action="'+ goto +'" method=post><INPUT id=xxpbButReload type=submit value=RELOAD><INPUT type=hidden name=s value="'+ serverId +'"</form>';
  var e = document.createElement ('div');
  e.innerHTML = t;
  document.body.appendChild (e);
  setTimeout (function (){document.getElementById('xxpbButReload').click();}, 0);
}
function formatUnixTime (unixTimeString,format){
	var rtn = unsafeWindow.formatDateByUnixTime (unixTimeString);
/*if (format=='24hour') {
		if (rtn.substr(14,2)=='AM')
			rtn = rtn.substr(0,13);
		else
			rtn = rtn.substr(8,2)+' '+rtn.substr(0,8)+(parseInt(rtn.substr(8,2))+12)+rtn.substr(10,3);
	} */
	return rtn;
}


ptStartup ();
